get_posts - obtém todas as postagens por ID do autor

11

Desejo obter todas as postagens por determinado ID do autor (usuário atual). Posteriormente, quero escolher o primeiro post feito por esse usuário (ASC). Acho que não uso os argumentos certos em get_posts, não é? $ current_user_posts sempre contém uma matriz com todas as postagens do blog em vários objetos WP_Post diferentes.

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
fonte
11
get_currentuserinfo () está obsoleto desde a versão 4.5.0. Substitua por:$current_user = wp_get_current_user();
Christian Lescuyer

Respostas:

19

Estou um pouco confuso. Se você deseja obter apenas um elemento da matriz posts, pode obtê-lo assim:

  • reset ($ current_user_posts) - primeira postagem
  • end ($ current_user_posts) - postagem final

Mas se você deseja obter apenas uma postagem com o, get_posts()você pode usar o posts_per_pageargumento para limitar os resultados.

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

Mais informações sobre os parâmetros que você pode obter na página Referência da classe de consulta WP ( get_posts()usa os mesmos parâmetros que a consulta WP).

Marin Bînzari
fonte
11
seu $ args funciona bem, mas não recebo sua primeira resposta. Como usar $ current_user_posts. Você poderia me mostrar?
Kindo
Se você deseja imprimir o título do primeiro post você deve usar: echo $current_user_posts[0]['title']. O 'título' é a chave para o que você precisa da matriz. A lista completa de chaves que você pode obter print_r(array_keys($current_user_posts)). "Como usar" depende do que você quer fazer com ele.
Marin Bînzari
obter a identificação do primeiro post do autor
kindo
Você pode obter o ID com: $ current_user_posts [0] ['ID']
Marin Bînzari
@kindo, ajudou? Essa é a resposta que você precisava?
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);

e apenas repetir as postagens atuais do usuário

kdgilang
fonte
Você pode também explicar o que o código acima faz em addtion de postar o código, que será útil, graças
bravokeyl
1

seu trabalho por (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
fonte