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 );

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).


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


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>' );
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.