get_posts - pobierz wszystkie posty według identyfikatora autora

11

Chcę uzyskać wszystkie posty według określonego identyfikatora autora (bieżący użytkownik). Później chcę wybrać pierwszy post napisany przez tego użytkownika (ASC). Chyba nie używam właściwych argumentów w get_posts, prawda? $ current_user_posts zawsze zawiera tablicę ze wszystkimi postami na blogu w wielu różnych obiektach 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 );
kindo
źródło
1
Funkcja get_currentuserinfo () jest przestarzała od wersji 4.5.0. Zamień na:$current_user = wp_get_current_user();
Christian Lescuyer

Odpowiedzi:

19

Jestem nieco zdezorientowany. Jeśli chcesz uzyskać tylko element z tablicy postów, możesz uzyskać go w następujący sposób:

  • reset ($ current_user_posts) - pierwszy post
  • end ($ current_user_posts) - lat post

Ale jeśli chcesz dostać tylko jeden post z get_posts(), możesz użyć posts_per_pageargumentu, aby ograniczyć wyniki.

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

Więcej informacji o parametrach można uzyskać na stronie WP Query Class Reference ( get_posts()przyjmuje te same parametry co WP Query).

Marin Bînzari
źródło
1
twoje $ args działają dobrze, ale nie otrzymuję twojej pierwszej odpowiedzi. Jak korzystać z $ current_user_posts. Czy mógłbyś mi pokazać?
kindo
Jeśli chcesz wydrukować tytuł pierwszego postu należy użyć: echo $current_user_posts[0]['title']. „Tytuł” ​​jest kluczem do tego, czego potrzebujesz z tablicy. Pełna lista kluczy, które możesz zdobyć print_r(array_keys($current_user_posts)). „Jak korzystać” zależy od tego, co chcesz z tym zrobić.
Marin Bînzari,
pobierz identyfikator pierwszego postu autora
kindo
Możesz pobrać identyfikator za pomocą: $ current_user_posts [0] ['ID']
Marin Bînzari
@kindo, czy to pomogło? Czy to odpowiedź, której potrzebujesz?
Marin 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);

i po prostu zapętlić bieżące posty użytkowników

kdgilang
źródło
Czy możesz również wyjaśnić, co powyższy kod robi oprócz dodania kodu, będzie to pomocne, dzięki
bravokeyl
1

jego praca autorstwa (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>' );
sirmagid
źródło