Como obter todas as postagens com qualquer status de postagem?

31

Estou criando um painel frontal no qual preciso mostrar todas as postagens do usuário atual. Então, preciso mostrar postagens em todos os estados, principalmente published , trashed e pending . Agora estou usando uma consulta simples, mas ela está retornando apenas as postagens publicadas.

$query = array(
    'post_type' => 'my-post-type',
    'post_author' => $current_user->ID              
    );
    query_posts($query);

Alguém pode ajudar? O que mais eu preciso fazer?

    
por Sisir 30.03.2011 / 15:41

3 respostas

50

Você pode usar o parâmetro post_status:

* 'publish' - a published post or page
* 'pending' - post is pending review
* 'draft' - a post in draft status
* 'auto-draft' - a newly created post, with no content
* 'future' - a post to publish in the future
* 'private' - not visible to users who are not logged in
* 'inherit' - a revision. see get_children.
* 'trash' - post is in trashbin. added with Version 2.9. 

Não tenho certeza se aceita 'any', então use o array com todos os tipos que você quiser:

$query = array(
    'post_type' => 'my-post-type',
    'post_author' => $current_user->ID,
    'post_status' => array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash')    
);
$loop = new WP_Query($query);

while ( $loop->have_posts() ) : $loop->the_post();
    
por Bainternet 30.03.2011 / 16:20
6

O método WP_Query class ->query() aceita um argumento any para post_status . Veja wp_get_associated_nav_menu_items() para uma prova.

O mesmo vale para get_posts() (que é apenas um invólucro para a chamada acima).

    
por kaiser 05.10.2012 / 13:02
5

Existe uma maneira simples de obter todos os posts com qualquer status:

$articles = get_posts(
 array(
  'numberposts' => -1,
  'post_status' => 'any',
  'post_type' => get_post_types('', 'names'),
 )
);

Agora você pode repetir todas as postagens:

foreach ($articles as $article) { 
 echo $article->ID . PHP_EOL; //...
}
    
por OzzyCzech 31.01.2013 / 10:55