Wie bekomme ich alle Posts mit einem Post-Status?
-
-
Haben Sie versucht,den Parameter [`post_status`] (http://codex.wordpress.org/Function_Reference/WP_Query#Type_.26_Status_Parameters) zu verwenden,d. H.`'post_status'=> 'any'`?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
-
Ichempfehle dringend,"WP_Query" "pre_get_posts" oder "get_posts" anstelle von "query_posts" zu verwenden.Verwenden Sieniemals `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: das war vor langer Zeit :) Ichbenutze WP_Queryjetztmeistens.@TomJNowell: that was way back :) I use WP_Query most ofter now..
- 0
- 2013-04-17
- Sisir
-
@Sisir,seien Sie vorsichtig,verwenden Sie "WP_Query"für das Front-End und "get_posts"für Administratorabfragen,daein Problemmit "wp_reset_postdata" vorliegt (siehe [note] (https://codex.wordpress.org/Class_Reference/WP_Query)#Interacting_with_WP_Query) und [ticket] (https://core.trac.wordpress.org/ticket/18408) zu diesem Thema).@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 Antworten
- Stimmen
-
- 2011-03-30
Sie können den Parameterpost_status verwenden:
* '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.
Ichbin nicht sicher,obes "any" akzeptiert. Verwenden Sie daherein Arraymit allengewünschten Status:
$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();
-
Sie können auchget_post_stati () verwenden,um alle Statuseinschließlich derbenutzerdefinierten Status abzurufen.You could also use `get_post_stati()` to get all statuses, including custom ones.
- 8
- 2013-01-31
- fuxia
-
Eine verpasste Gelegenheit,einen "query_posts" -Aufruf abzubrechen ...A wasted opportunity to kill off a `query_posts` call...
- 5
- 2013-04-16
- Tom J Nowell
-
Schade,dass wir soetwasnichtmachen können ``post_status '=> array ('!inherit '); `(umeinen anderenpost_status als zuerben anzuzeigen)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 wasistmit "post_status"=> array_diff (get_post_stati (),["erben"]);@aequalsb what about `'post_status' => array_diff(get_post_stati(), ['inherit']);`
- 0
- 2018-10-29
- Cheslab
-
Off-Topic.'any'isteigentlicheine echte Sache.Dokumente: 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
Esgibt eineeinfache Möglichkeit,alle Beiträgemit einembeliebigen Status abzurufen:
$articles = get_posts( array( 'numberposts' => -1, 'post_status' => 'any', 'post_type' => get_post_types('', 'names'), ) );
Jetzt können Sie alle Beiträge durchlaufen:
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 und $post stehenin Konfliktmit deneigenen Variablennamen von Wordpress **.Wenn Sie diesen Code verwenden,umetwas anderes als denprimären (Hauptinhalt) diveinzufügen,wird dadurch überschrieben,wasin main angezeigt worden wäre.Wenn Sie wirklichbeabsichtigen,die ursprünglichen Abfrageergebnisse vollständig zuersetzen,ist diesnatürlich das,was Sie wollen.Esistjedochimmernocheine gute Idee,die Variablen $posts und $post umzubenennen.**$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
-
@Henrik Ich habenicht die Absicht,Ihren Kommentar zu verringern (Ihre Logikist solide und sicher),aberichbetrachte die Verwendung von $post/$posts als vollkommen akzeptabelinnerhalbeiner Funktion ohne Zugriff auf dieglobalen Variablen $post/$posts - weilEs hilftmir,die Logik während der Entwicklung aufrechtzuerhalten.@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
Die Klassenmethode
WP_Query
->query()
akzeptierteinany
Argumentfürpost_status
.Einen Beweisfinden Sie unterwp_get_associated_nav_menu_items()
.Gleichesgiltfür
get_posts()
(diesistnurein Wrapperfür den obigen Aufruf).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).-
Aus den WP_Query-Dokumenten: _'any '- Rufteinen beliebigen Status ab,mit Ausnahme derjenigen von Beitragstypen,bei denen'exclude_from_search 'auftruegesetztist.Entwurf und Müll sind ausgeschlossen.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,dasist kein Tippfehler.Es ruftjeden Status von Post-Typen ab,die öffentlich verfügbar sind.Status sindnur Begriffe.Sie haben selbst kein öffentliches oderprivates Eigentum.Sie könnteneine Taxonomie deaktivieren,indem Sie die Abfragevariable deaktivieren ... aus welchem Grund auchimmer.Nebenbemerkung: [Der Plural des Post-Statusist ...] (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
-
Wenn Sie den Codenachverfolgen (ofteinfacher als das Lesen der Dokumente,findeich),können Sie sehen,dass "WP_Query #get_posts ()"get_post_stati () "aufruft,wodurch" $ wp_post_statuses "nach Wertengefiltert wird,bei denen"exclude_from_search "wahristschließt Beiträgemit diesen [Status] (https://www.google.com/search?q=define+statuses) von der Abfrage aus.Esgibt einen ähnlichen Prozessfür Beitragstypen,wennpost_type auf 'any'gesetztist.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 Nachdemich den Inhalt der Eigenschaft $ wp_post_statuses überprüft habe,mussich zugeben,dass Sie Recht haben :)@Tamlyn After checking the contents of the `$wp_post_statuses` property, I have to admit that you're right :)
- 0
- 2013-04-16
- kaiser
-
funktioniertnichtfür den Papierkorbstatus.doesn't work for trash status.
- 0
- 2018-12-10
- Maxwell s.c
-
- 2019-08-28
In denmeisten Fällen können Sie
get_posts()
mit dem Parameter'any'
verwenden:$posts = get_posts( array( 'numberposts' => -1, 'post_status' => 'any', 'post_type' => 'my-post-type', ) );
Auf diese Weiseerhalten Siejedoch keine Beiträgemit dem Status
trash
undauto-draft
.Siemüssen sieexplizit wiefolgt angeben:$posts = get_posts( array( 'numberposts' => -1, 'post_status' => 'any, trash, auto-draft', 'post_type' => 'my-post-type', ) );
Oder Sie können die Funktionget_post_stati () verwenden,um alle vorhandenen Statusexplizit anzugeben:
$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
Auch wenn Sie
any
alspost_status
übergeben,erhält den Beitragimmernochnichtim Ergebnis ,wenn alle derfolgenden Bedingungenerfüllt sind:- Eineinzelner Beitrag wird abgefragt.Ein Beispiel hierfür wäre das Abfragennach
name
,d. H. Dem Slug. - Der Beitrag hateinen nicht öffentlichen Beitragsstatus.
- Der Client hat keine aktive Administrationssitzung,d. H. Sie sind derzeitnicht angemeldet.
Lösung
explizit fürjeden Status abfragen.Wenn Siebeispielsweisenach Statifragenmöchten,bei denenes sichnicht um
trash
oderauto-draft
handelt (esist ziemlich unwahrscheinlich,dass Sie diesemöchten),können Sie Folgendestun:$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]), ]);
Icherstelleein Front-End-Dashboard,in dem alle Beiträge des aktuellen Benutzers angezeigt werdenmüssen.Dahermussich Beiträgein allen Bundesstaaten anzeigen,hauptsächlich
published
,trashed
undpending
.Ich verwendejetzteine einfache Abfrage,diejedochnur die veröffentlichten Beiträge zurückgibt.Kannjemand helfen?Wasmussichnochtun?