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, trashedy 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_statusparámetro , es decir.'post_status' => 'any'?WP_Querypre_get_postsoget_postsen lugar dequery_posts. Nunca usequery_postsWP_Querypara el front-end yget_postspara 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_postsllamada ...'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_Querymétodo de clase->query()acepta unanyargumento 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-draftytrashestá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_statusesvalores dondeexclude_from_searchson 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_statusespropiedad, 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
trashyauto-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
anycomopost_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
trashoauto-draft(es bastante improbable que las desee), podría hacer algo como esto:fuente