Estoy creando un panel frontal donde necesito mostrar todas las publicaciones del usuario actual. Por lo tanto, necesito mostrar publicaciones en todos los estados, principalmente published
, trashed
y el pending
. Ahora estoy usando una consulta simple pero solo devuelve las publicaciones publicadas.
$query = array(
'post_type' => 'my-post-type',
'post_author' => $current_user->ID
);
query_posts($query);
¿Alguien puede ayudar? ¿Qué más necesito hacer?
query-posts
wp-query
post-status
Sisir
fuente
fuente
post_status
parámetro , es decir.'post_status' => 'any'
?WP_Query
pre_get_posts
oget_posts
en lugar dequery_posts
. Nunca usequery_posts
WP_Query
para el front-end yget_posts
para consultas administrativas ya que existe un problema conwp_reset_postdata
(vea la nota y el ticket sobre este problema).Respuestas:
Puede usar el parámetro post_status:
No estoy seguro de que acepte 'cualquiera', así que use y realice una matriz con todos los tipos que desee:
fuente
get_post_stati()
para obtener todos los estados, incluidos los personalizados.query_posts
llamada ...'post_status' => array( '!inherit' );
(para indicar cualquier estado post_stato que no sea heredar)'post_status' => array_diff(get_post_stati(), ['inherit']);
Hay una manera simple de cómo obtener todas las publicaciones con cualquier estado:
Ahora puedes iterar en todas las publicaciones:
fuente
El
WP_Query
método de clase->query()
acepta unany
argumento parapost_status
. Verwp_get_associated_nav_menu_items()
para una prueba.Lo mismo ocurre con
get_posts()
(que es solo un contenedor para la llamada anterior).fuente
auto-draft
ytrash
están excluidos.query_var
... por la razón que sea uno haría eso. Nota al margen: El plural de estado post es ... .WP_Query#get_posts()
llamadasget_post_stati()
que filtran$wp_post_statuses
valores dondeexclude_from_search
son verdaderas, excluyen las publicaciones con estos estados de la consulta. Hay un proceso similar para los tipos de publicación cuando post_type se establece en 'any'.$wp_post_statuses
propiedad, tengo que admitir que tienes razón :)En la mayoría de los casos se puede utilizar
get_posts()
con el'any'
parámetro para esto:Pero de esta manera no obtendrás publicaciones con estado
trash
yauto-draft
. Debe proporcionarlos explícitamente, así:O puede usar la función get_post_stati () para proporcionar explícitamente todos los estados existentes:
fuente
Incluso si pasa
any
comopost_status
, aún no obtendrá la publicación en el resultado si se cumplen todas las condiciones siguientes:name
, es decir, la babosa.Solución
Consulta explícitamente para cada estado. Por ejemplo, para consultar estadísticas que no son
trash
oauto-draft
(es bastante improbable que las desee), podría hacer algo como esto:fuente