get_posts - obține toate articolele după ID-ul autorului

12 aug. 2013, 02:24:11
Vizualizări: 132K
Voturi: 15

Vreau să obțin toate articolele după ID-ul unui anumit autor (utilizatorul curent). Mai târziu, vreau să selectez primul articol creat de acest utilizator (ASC). Presupun că nu folosesc argumentele corecte în get_posts, nu-i așa? $current_user_posts conține întotdeauna un Array cu toate articolele blogului în multiple Obiecte WP_Post diferite.

global $current_user;
get_currentuserinfo();                      

$args = array(
    'author'        =>  $current_user->ID, // Aș putea folosi și $user_ID, corect?
    'orderby'       =>  'post_date',
    'order'         =>  'ASC' 
    );

// obține articolele sale 'ASC'
$current_user_posts = get_posts( $args );
1
Comentarii

get_currentuserinfo() este învechită începând cu versiunea 4.5.0. Înlocuiți cu: $current_user = wp_get_current_user();

Christian Lescuyer Christian Lescuyer
15 mai 2017 11:43:27
Toate răspunsurile la întrebare 3
8
27

Sunt un pic confuz. Dacă vrei să obții doar un element din array-ul de postări, poți face asta în felul următor:

  • reset($current_user_posts) - prima postare
  • end($current_user_posts) - ultima postare

Dar dacă vrei să obții o singură postare cu funcția get_posts(), poți folosi argumentul posts_per_page pentru a limita rezultatele.

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

Mai multe informații despre parametri poți găsi pe pagina Referința Clasei WP Query (funcția get_posts() acceptă aceiași parametri ca și WP Query).

12 aug. 2013 10:22:39
Comentarii

argumentele tale $args funcționează bine, dar nu înțeleg primul tău răspuns. Cum să folosesc $current_user_posts. Poți să-mi arăți?

kindo kindo
12 aug. 2013 10:59:48

Dacă vrei să afișezi titlul primului post, ar trebui să folosești: echo $current_user_posts[0]['title']. 'title' este cheia pentru ceea ce ai nevoie din array. Lista completă de chei o poți obține cu print_r(array_keys($current_user_posts)).

"Cum să-l folosești" depinde de ce vrei să faci cu el.

Marin Bînzari Marin Bînzari
12 aug. 2013 11:17:18

obține id-ul primului post al autorului

kindo kindo
12 aug. 2013 11:28:34

Poți obține ID-ul cu: $current_user_posts[0]['ID']

Marin Bînzari Marin Bînzari
12 aug. 2013 11:29:54

@kindo, te-a ajutat? Este acesta răspunsul de care aveai nevoie?

Marin Bînzari Marin Bînzari
12 aug. 2013 12:05:34

$current_user_posts[0]['ID'] nu funcționează. Dar prima soluție cu adăugarea 'numberposts' sau 'posts_per_page' (folosite la fel) funcționează bine. Mulțumesc.

kindo kindo
12 aug. 2013 14:14:53

@kindo, Scuze, am uitat că get_posts() returnează un array de obiecte post. Folosește $current_user_posts[0]->ID

Marin Bînzari Marin Bînzari
12 aug. 2013 14:29:24

Ultima soluție funcționează acum de asemenea.

kindo kindo
12 aug. 2013 14:43:19
Arată celelalte 3 comentarii
1
global $current_user; // Accesăm utilizatorul curent                     

$args = array(
  'author'        =>  $current_user->ID, // ID-ul autorului (utilizator curent) 
  'orderby'       =>  'post_date', // Sortare după dată postare
  'order'         =>  'ASC', // Ordine crescătoare (cele mai vechi primele)
  'posts_per_page' => -1 // fără limită de postări
);

// Obținem postările utilizatorului curent
$current_user_posts = get_posts( $args );
$total = count($current_user_posts); // Număr total de postări

și apoi pur și simplu iterăm prin postările utilizatorului curent

9 sept. 2016 06:46:58
Comentarii

Poți să explici și ce face codul de mai sus, pe lângă a-l posta? Ar fi de ajutor, mulțumesc

bravokeyl bravokeyl
9 sept. 2016 08:11:19
0

funcționează pe (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>' );
8 iul. 2018 14:13:40