get_posts - obtener todas las entradas por ID de autor

12 ago 2013, 02:24:11
Vistas: 132K
Votos: 15

Quiero obtener todas las entradas de un determinado ID de autor (usuario actual). Posteriormente, quiero seleccionar la primera entrada realizada por este usuario (ASC). ¿Estoy usando los argumentos correctos en get_posts? $current_user_posts siempre contiene un Array con todas las entradas del blog en múltiples objetos WP_Post diferentes.

global $current_user;
get_currentuserinfo();                      

$args = array(
    'author'        =>  $current_user->ID, // También podría usar $user_ID, ¿verdad?
    'orderby'       =>  'post_date',
    'order'         =>  'ASC' 
    );

// obtener sus entradas en orden 'ASC'
$current_user_posts = get_posts( $args );
1
Comentarios

get_currentuserinfo() está obsoleto desde la versión 4.5.0. Reemplázalo con: $current_user = wp_get_current_user();

Christian Lescuyer Christian Lescuyer
15 may 2017 11:43:27
Todas las respuestas a la pregunta 3
8
27

Estoy un poco confundido. Si quieres obtener solo un elemento del array de posts, puedes hacerlo así:

  • reset($current_user_posts) - primer post
  • end($current_user_posts) - último post

Pero si quieres obtener solo un post con get_posts() puedes usar el argumento posts_per_page para limitar los resultados.

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

Puedes obtener más información sobre los parámetros en la página de Referencia de la Clase WP Query (get_posts() acepta los mismos parámetros que WP Query).

12 ago 2013 10:22:39
Comentarios

tus $args funcionan bien pero no entiendo tu primera respuesta. ¿Cómo usar $current_user_posts? ¿Podrías mostrarme?

kindo kindo
12 ago 2013 10:59:48

Si quieres imprimir el título del primer post deberías usar: echo $current_user_posts[0]['title']. 'title' es la clave para lo que necesitas del array. La lista completa de claves la puedes obtener con print_r(array_keys($current_user_posts)).

"Cómo usarlo" depende de lo que quieras hacer con él.

Marin Bînzari Marin Bînzari
12 ago 2013 11:17:18

obtener el id del primer post del autor

kindo kindo
12 ago 2013 11:28:34

Puedes obtener el ID con: $current_user_posts[0]['ID']

Marin Bînzari Marin Bînzari
12 ago 2013 11:29:54

@kindo, ¿te sirvió? ¿Es esta la respuesta que necesitabas?

Marin Bînzari Marin Bînzari
12 ago 2013 12:05:34

$current_user_posts[0]['ID'] no funciona. Pero la primera solución con agregar 'numberposts' o 'posts_per_page' (ambos se usan igual) funciona bien. Gracias.

kindo kindo
12 ago 2013 14:14:53

@kindo, Lo siento, olvidé que get_posts() devuelve un array de objetos de posts. Usa $current_user_posts[0]->ID

Marin Bînzari Marin Bînzari
12 ago 2013 14:29:24

La última solución ahora también funciona.

kindo kindo
12 ago 2013 14:43:19
Mostrar los 3 comentarios restantes
1
global $current_user;                     

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


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

y simplemente recorre los posts del usuario actual

9 sept 2016 06:46:58
Comentarios

¿Podrías también explicar qué hace el código anterior además de publicarlo? Sería de mucha ayuda, gracias.

bravokeyl bravokeyl
9 sept 2016 08:11:19
0

funciona con (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 jul 2018 14:13:40