get_posts - отримуйте всі повідомлення за ідентифікатором автора


11

Я хочу отримати всі повідомлення за певним ідентифікатором автора (поточний користувач). Пізніше я хочу вибрати перше повідомлення, зроблене цим користувачем (ASC). Я думаю, я не використовую правильних аргументів у get_posts, чи не так? $ current_user_posts завжди містить масив із усіма публікаціями блогу в декількох різних WP_Post об'єктах.

global $current_user;
get_currentuserinfo();                      

$args = array(
    'author'        =>  $current_user->ID, // I could also use $user_ID, right?
    'orderby'       =>  'post_date',
    'order'         =>  'ASC' 
    );

// get his posts 'ASC'
$current_user_posts = get_posts( $args );

1
get_currentuserinfo () застаріло з версії 4.5.0. Замініть на:$current_user = wp_get_current_user();
Крістіан Лескуер

Відповіді:


19

Я трохи розгублений. Якщо ви хочете отримати лише елемент з масиву повідомлень, ви можете отримати його так:

  • скинути ($ current_user_posts) - перше повідомлення
  • кінець ($ current_user_posts) - lat post

Але якщо ви хочете отримати лише одну посаду з get_posts()вами, ви можете використовувати posts_per_pageаргумент, щоб обмежити результати.

$args = array(
    'author'        =>  $current_user->ID,
    'orderby'       =>  'post_date',
    'order'         =>  'ASC',
    'posts_per_page' => 1
    );

Більш детальну інформацію про параметри ви можете отримати на сторінці довідкового класу WP Query ( get_posts()приймає ті ж параметри, що і WP Query).


1
ваші $ аргументи працюють добре, але я не отримую вашої першої відповіді. Як використовувати $ current_user_posts. Не могли б ви мені показати?
кіндо

Якщо ви хочете , щоб надрукувати назву першого поста слід використовувати: echo $current_user_posts[0]['title']. 'Заголовок' є ключовим для того, що вам потрібно з масиву. Повний список ключів, з якими ви можете отримати print_r(array_keys($current_user_posts)). "Як використовувати", це залежить від того, що ви хочете зробити з цим.
Марін Бонзарі

отримати ідентифікатор першого повідомлення автора
kindo

Ви можете отримати ідентифікатор за допомогою: $ current_user_posts [0] ['ID']
Marin Bînzari

@kindo, це допомогло? Це потрібна відповідь?
Марін Бонзарі

6
global $current_user;                     

$args = array(
  'author'        =>  $current_user->ID, 
  'orderby'       =>  'post_date',
  'order'         =>  'ASC',
  'posts_per_page' => -1 // no limit
);


$current_user_posts = get_posts( $args );
$total = count($current_user_posts);

і просто цикліть поточні повідомлення користувачів


Чи можете ви також пояснити, що описаний вище код додає до публікації коду, це буде корисно, дякую
bravokeyl

1

його робота за (wp4.9.7)

 $user_id = get_current_user_id();
 $args=array(
 'post_type' => 'POSTTYPE',
 'post_status' => 'publish',
 'posts_per_page' => 1,
 'author' => $user_id
  );

$current_user_posts = get_posts( $args );
$total = count($current_user_posts);
wp_die( '<pre>' .  $total . '</pre>' );
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.