Estou criando um painel de front end em que preciso mostrar todas as postagens do usuário atual. Então, eu preciso mostrar posts em todos os estados, principalmente published
, trashed
e no 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?
query-posts
wp-query
post-status
Sisir
fonte
fonte
post_status
parâmetro , ie.'post_status' => 'any'
?WP_Query
pre_get_posts
ouget_posts
em vez dequery_posts
. Nunca usequery_posts
WP_Query
para front-end eget_posts
para consultas de administrador, pois há um problemawp_reset_postdata
(consulte a nota e o ticket sobre esse problema).Respostas:
Você pode usar o parâmetro post_status:
Não tenho certeza de que ele aceita 'any'; portanto, use e array com todos os tipos que você deseja:
fonte
get_post_stati()
para obter todos os status, incluindo os personalizados.query_posts
chamada ...'post_status' => array( '!inherit' );
(para indicar qualquer post_status que não herdam)'post_status' => array_diff(get_post_stati(), ['inherit']);
Existe uma maneira simples de obter todas as postagens com qualquer status:
Agora você pode iterar em todas as postagens:
fonte
O
WP_Query
método de classe->query()
aceita umany
argumento parapost_status
. Vejawp_get_associated_nav_menu_items()
para uma prova.O mesmo vale para
get_posts()
(que é apenas um invólucro para a chamada acima).fonte
auto-draft
etrash
são excluídos.query_var
... por qualquer motivo que alguém faça isso. Sidenote: O plural do estado post é ... .WP_Query#get_posts()
chamadasget_post_stati()
que filtram$wp_post_statuses
valores ondeexclude_from_search
é verdadeiro, excluem da consulta as postagens com esses status . Existe um processo semelhante para os tipos de postagem quando post_type está definido como 'any'.$wp_post_statuses
propriedade, eu tenho que admitir que você está certo :)Na maioria dos casos, você pode usar
get_posts()
com o'any'
parâmetro para isso:Mas dessa forma você não receberá postagens com status
trash
eauto-draft
. Você precisa fornecê-los explicitamente, assim:Ou você pode usar a função get_post_stati () para fornecer todos os status existentes explicitamente:
fonte
Mesmo se você passar
any
comopost_status
, ainda não receberá a postagem no resultado se todas as seguintes condições forem verdadeiras:name
, ou seja, a lesma.Solução
Consulta explicitamente para todos os status. Por exemplo, para consultar stati que não são
trash
ouauto-draft
(é muito improvável que você os queira), você pode fazer algo assim:fonte