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

Я немного смущен. Если вы хотите получить только элемент из массива posts, вы можете получить его так:

  • сброс ($ current_user_posts) - первое сообщение
  • end ($ current_user_posts) - последняя запись

Но если вы хотите получить только один пост с, 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
ваши $ args работают нормально, но я не получаю ваш первый ответ. Как использовать $ current_user_posts. Не могли бы вы показать мне?
любезно

Если вы хотите , чтобы напечатать название первого поста следует использовать: echo $current_user_posts[0]['title']. «Заголовок» - это ключ для того, что вам нужно из массива. Полный список ключей, которые вы можете получить print_r(array_keys($current_user_posts)). «Как пользоваться» зависит от того, что вы хотите с ним сделать.
Марин Bînzari

получить идентификатор первого поста автора
своего рода

Вы можете получить идентификатор с помощью: $ current_user_posts [0] ['ID']
Марин Bînzari

@kindo, это помогло? Вам нужен этот ответ?
Марин Bînzari

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.