¿Cómo obtener todas las publicaciones con cualquier estado de publicación?
-
-
¿Haintentado utilizarel [parámetro `post_status`] (http://codex.wordpress.org/Function_Reference/WP_Query#Type_.26_Status_Parameters),es decir.`'post_status'=> 'cualquiera'`?Have you tried using the [`post_status` parameter](http://codex.wordpress.org/Function_Reference/WP_Query#Type_.26_Status_Parameters), ie. `'post_status' => 'any'`?
- 5
- 2011-03-30
- t31os
-
*** Recomiendoencarecidamente *** usar `WP_Query``pre_get_posts` o `get_posts`en lugar de` query_posts`.Nunca use `query_posts`I ***strongly*** recommend using `WP_Query` `pre_get_posts` or `get_posts` instead of `query_posts`. Never use `query_posts`
- 2
- 2013-04-16
- Tom J Nowell
-
@TomJNowell:esofue hacemuchotiempo :) Ahora uso WP_Query lamayoría de las veces ...@TomJNowell: that was way back :) I use WP_Query most ofter now..
- 0
- 2013-04-17
- Sisir
-
@Sisirtenga cuidado,use `WP_Query`paraelfront-end y`get_posts`para las consultas de administrador,ya que hay unproblema con `wp_reset_postdata` (consulte la [nota] (https://codex.wordpress.org/Class_Reference/WP_Query#Interacting_with_WP_Query) y [ticket] (https://core.trac.wordpress.org/ticket/18408) sobreestetema).@Sisir be careful, use `WP_Query` for front-end, and `get_posts` for admin queries as there is an issue with `wp_reset_postdata` (see the [note](https://codex.wordpress.org/Class_Reference/WP_Query#Interacting_with_WP_Query) and [ticket](https://core.trac.wordpress.org/ticket/18408) on this issue).
- 1
- 2017-01-30
- Aurovrata
-
5 respuestas
- votos
-
- 2011-03-30
Puede utilizarelparámetropost_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.
Noestoy seguro de que acepte 'cualquiera',así que use unamatriz contodos losestados que desee:
$args = array( 'post_type' => 'my-post-type', 'post_author' => $current_user->ID, 'post_status' => array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash') ); $query = new WP_Query($args); while ( $query->have_posts() ) : $query->the_post();
You can use the post_status parameter:
* '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.
I'm not sure that it accepts 'any' so use an array with all of the statuses you want:
$args = array( 'post_type' => 'my-post-type', 'post_author' => $current_user->ID, 'post_status' => array('publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash') ); $query = new WP_Query($args); while ( $query->have_posts() ) : $query->the_post();
-
Tambiénpuede usar `get_post_stati ()`para obtenertodos losestados,incluidos lospersonalizados.You could also use `get_post_stati()` to get all statuses, including custom ones.
- 8
- 2013-01-31
- fuxia
-
Una oportunidadperdidapara acabar con una llamada de `query_posts` ...A wasted opportunity to kill off a `query_posts` call...
- 5
- 2013-04-16
- Tom J Nowell
-
lástima quenopodamos hacer algo comoesto ''post_status '=> array ('! heredar '); `(paraindicar cualquierpost_status queno sea heredar)too bad we can't do something like this `'post_status' => array( '!inherit' );` (to indicate any post_status other than inherit)
- 0
- 2017-01-03
- aequalsb
-
@aequalsb ¿quépasa con `` 'post_status'=> array_diff (get_post_stati (),['heredar']); `@aequalsb what about `'post_status' => array_diff(get_post_stati(), ['inherit']);`
- 0
- 2018-10-29
- Cheslab
-
fuera de contexto.'any'es algo realen realidad.Documentos: https://developer.wordpress.org/reference/classes/wp_query/#post-type-parametersoff-topic. 'any' is a real thing actually. Docs: https://developer.wordpress.org/reference/classes/wp_query/#post-type-parameters
- 2
- 2020-01-20
- kirillrocks
-
- 2013-01-31
Existe unaforma sencilla de obtenertodas laspublicaciones con cualquierestado:
$articles = get_posts( array( 'numberposts' => -1, 'post_status' => 'any', 'post_type' => get_post_types('', 'names'), ) );
Ahorapuedeiteraren todas laspublicaciones:
foreach ($articles as $article) { echo $article->ID . PHP_EOL; //... }
There is simple way, how to get all posts with any status:
$articles = get_posts( array( 'numberposts' => -1, 'post_status' => 'any', 'post_type' => get_post_types('', 'names'), ) );
Now you can iterate throughout all posts:
foreach ($articles as $article) { echo $article->ID . PHP_EOL; //... }
-
** $posts y $postentranen conflicto con losnombres de variablespropios de Wordpress **.Siestá utilizandoeste códigopara colocar algoen otro divprincipal (contenidoprincipal),esto sobrescribirá lo que se habríamostradoen main.Si suintención realmentees reemplazar completamente los resultados de la consulta original,estoes lo que desea,por supuesto.Pero sigue siendo unabuenaidea cambiarelnombre de las variables $posts y $post.**$posts and $post conflict with Wordpress' own variable names**. If you are using this code to put something in other than the primary (main content) div, this will overwrite what would have been shown in main. If your intention really is to completely replace the original query results, this is what you want, of course. But it's still a good idea to rename the $posts and $post variables.
- 2
- 2014-02-03
- Henrik Erlandsson
-
@Henriknotengo laintención de disminuir su comentarioen absoluto (su lógicaes sólida y segura),pero considero que usar $post/$postsesperfectamente aceptable dentro de unafunción sin acceso a las variablesglobales $post/$posts,porqueme ayuda amantener la lógica duranteel desarrollo.@Henrik i am not intending to diminish your comment at all (your logic is sound and safe), but i consider using $post/$posts as perfectly acceptable inside a function without access to the global $post/$posts variables -- because it helps me maintain logic during development.
- 5
- 2017-01-03
- aequalsb
-
- 2012-10-05
Elmétodo de clase
WP_Query
->query()
acepta unany
argumentoparapost_status
.Consultewp_get_associated_nav_menu_items()
para obtener unaprueba.Lomismo ocurre con
get_posts()
(quees solo un contenedorpara la llamada anterior).The
WP_Query
class method->query()
accepts anany
argument forpost_status
. Seewp_get_associated_nav_menu_items()
for a proof.The same goes for
get_posts()
(which is just a wrapper for above call).-
De los documentos de WP_Query: _'any ': recupera cualquierestadoexcepto los de lostipos depublicación con'exclude_from_search 'establecidoen verdadero. (Hay unerrortipográfico,en realidad se refieren aestados depublicaciónen lugar detipos depublicación). Esto significaestados `auto-borrador` y `basura`estánexcluidos.From the WP_Query docs: _'any' - retrieves any status except those from post types with 'exclude_from_search' set to true._ (There's a typo there, they actually mean post statuses instead of post types.) This means statuses `auto-draft` and `trash` are excluded.
- 4
- 2013-04-15
- Tamlyn
-
@Tamlyn Afaik,estonoes unerrortipográfico._Recupera cualquierestado de lostipos depublicaciones_ queestán disponiblespúblicamente.Elestado son solotérminos.Ellosmismosno obtuvieronningunapropiedadpública oprivada.Usted _podría_ deshabilitar unataxonomía deshabilitandoel `query_var` ...por cualquier razón,uno haríaeso.Nota almargen: [Elplural deestado de lapublicaciónes ...] (http://unserkaiser.com/uncategorized/status-and-plural/).@Tamlyn Afaik, this is no typo. It _retrieves any status from post types_ that are publicly available. Status are just terms. They got no _public_ or _private_ property themselves. You _could_ disable a taxonomy with disabling the `query_var`... for whatever reason one would do that. Sidenote: [The plural of post status is...](http://unserkaiser.com/uncategorized/status-and-plural/).
- 0
- 2013-04-15
- kaiser
-
Si rastreael código (amenudomásfácil que leer los documentos,me parece)puede ver que `WP_Query #get_posts ()` llama a `get_post_stati ()` quefiltra `$ wp_post_statuses`para valores donde`exclude_from_search`es verdadero,entoncesexcluye laspublicaciones conestos [estados] (https://www.google.com/search?q=define+statuses) de la consulta.Existe unproceso similarpara lostipos depublicaciones cuandopost_type seestableceen 'any'.If you trace through the code (often easier than reading the docs, I find) you can see that `WP_Query#get_posts()` calls `get_post_stati()` which filters `$wp_post_statuses` for values where `exclude_from_search` is true then it excludes posts with these [statuses](https://www.google.com/search?q=define+statuses) from the query. There's a similar process for post types when post_type is set to 'any'.
- 1
- 2013-04-16
- Tamlyn
-
@Tamlyn Después de verificarel contenido de lapropiedad `$ wp_post_statuses`,debo admitir quetienes razón :)@Tamlyn After checking the contents of the `$wp_post_statuses` property, I have to admit that you're right :)
- 0
- 2013-04-16
- kaiser
-
nofuncionaparaelestado de lapapelera.doesn't work for trash status.
- 0
- 2018-12-10
- Maxwell s.c
-
- 2019-08-28
En lamayoría de los casos,puede usar
get_posts()
conelparámetro'any'
paraesto:$posts = get_posts( array( 'numberposts' => -1, 'post_status' => 'any', 'post_type' => 'my-post-type', ) );
Pero deestamanerano obtendrápublicaciones conelestado
trash
yauto-draft
.Debeproporcionarlosexplícitamente,así:$posts = get_posts( array( 'numberposts' => -1, 'post_status' => 'any, trash, auto-draft', 'post_type' => 'my-post-type', ) );
Opuede usar lafunciónget_post_stati ()paraproporcionartodos losestadosexistentesexplícitamente:
$posts = get_posts( array( 'numberposts' => -1, 'post_status' => get_post_stati(), 'post_type' => 'my-post-type', ) );
In most cases you can use
get_posts()
with'any'
parameter for this:$posts = get_posts( array( 'numberposts' => -1, 'post_status' => 'any', 'post_type' => 'my-post-type', ) );
But this way you won't get posts with status
trash
andauto-draft
. You need to provide them explicitly, like this:$posts = get_posts( array( 'numberposts' => -1, 'post_status' => 'any, trash, auto-draft', 'post_type' => 'my-post-type', ) );
Or you can use get_post_stati() function to provide all existing statuses explicitly:
$posts = get_posts( array( 'numberposts' => -1, 'post_status' => get_post_stati(), 'post_type' => 'my-post-type', ) );
-
- 2019-03-28
Incluso sipasa
any
comopost_status
, aúnno obtendrá lapublicaciónen el resultado si se cumplentodas las condiciones siguientes:- Seestá consultando una solapublicación.Unejemplo deesto sería la consultapor
name
,es decir,el slug. - Lapublicacióntiene unestado depublicación quenoespúblico.
- El clientenotiene una sesión de administrador activa,es decir,no hainiciado sesión actualmente.
Solución
Consulta explícitamente para cadaestado.Porejemplo,para consultarestadísticas queno sean
trash
oauto-draft
(esmuypocoprobable que las desee),puede hacer algo comoesto:$q = new WP_Query([ /* ... */ 'post_status' => get_post_stati(['exclude_from_search' => false]), ]);
Even if you pass
any
aspost_status
, you still will not get the post in the result if all of the following conditions are true:- A single post is being queried. An example of this would be querying by
name
, i.e. the slug. - The post has a post status that is not public.
- The client does not have an active admin session, i.e. you are not currently logged in.
Solution
Query explicitly for every status. For example, to query for stati which are not
trash
orauto-draft
(it's pretty unlikely that you want those), you could do something like this:$q = new WP_Query([ /* ... */ 'post_status' => get_post_stati(['exclude_from_search' => false]), ]);
Estoy creando unpanel deinterfazen el quenecesitomostrartodas laspublicaciones del usuario actual.Entonces,necesitomostrarpublicacionesen todos losestados,principalmente
published
,trashed
yelpending
.Ahoraestoy usando una consulta simple,pero solo devuelve laspublicacionespublicadas.¿Alguienpuede ayudar?¿Quémás debo hacer?