Ich erstelle ein Front-End-Dashboard, in dem ich alle Beiträge des aktuellen Benutzers anzeigen muss. Also, ich brauche Beiträge in allen Staaten zu zeigen, vor allem published
, trashed
und das pending
. Ich verwende jetzt eine einfache Abfrage, die jedoch nur die veröffentlichten Beiträge zurückgibt.
$query = array(
'post_type' => 'my-post-type',
'post_author' => $current_user->ID
);
query_posts($query);
Kann jemand helfen? Was muss ich sonst noch tun?
query-posts
wp-query
post-status
Sisir
quelle
quelle
post_status
Parameter zu verwenden , dh.'post_status' => 'any'
?WP_Query
pre_get_posts
oderget_posts
anstelle vonquery_posts
. Niemals benutzenquery_posts
WP_Query
für Front-End- undget_posts
Administratoranfragen, da es ein Problem mit gibtwp_reset_postdata
(siehe Hinweis und Ticket zu diesem Problem).Antworten:
Sie können den Parameter post_status verwenden:
Ich bin nicht sicher, ob es "any" akzeptiert, also benutze und ordne es mit allen Typen, die du willst:
quelle
get_post_stati()
, um alle Status abzurufen, auch benutzerdefinierte.query_posts
Anruf'post_status' => array( '!inherit' );
(um einen anderen post_status als "inherit"'post_status' => array_diff(get_post_stati(), ['inherit']);
Es gibt eine einfache Möglichkeit, wie Sie alle Posts mit einem beliebigen Status abrufen können:
Jetzt können Sie alle Posts durchlaufen:
quelle
Die
WP_Query
Klassenmethode->query()
akzeptiert einany
Argument fürpost_status
. Siehewp_get_associated_nav_menu_items()
für einen Beweis.Das gleiche gilt für
get_posts()
(was nur ein Wrapper für den obigen Aufruf ist).quelle
auto-draft
undtrash
wird ausgeschlossen.query_var
... aus welchem Grund auch immer deaktivieren . Nebenbei bemerkt: Der Plural von Post - Status ist ... .WP_Query#get_posts()
Aufrufe,get_post_stati()
die$wp_post_statuses
nach Werten filtern, woexclude_from_search
wahr ist, Beiträge mit diesen Status von der Abfrage ausschließen. Es gibt einen ähnlichen Prozess für Beitragstypen, wenn post_type auf "any" gesetzt ist.$wp_post_statuses
ich den Inhalt der Unterkunft überprüft habe , muss ich zugeben, dass Sie Recht haben :)In den meisten Fällen können Sie
get_posts()
mit'any'
Parameter dafür verwenden:Auf diese Weise erhalten Sie jedoch keine Posts mit dem Status
trash
undauto-draft
. Sie müssen sie explizit wie folgt bereitstellen:Oder Sie können die Funktion get_post_stati () verwenden, um alle vorhandenen Status explizit anzugeben:
quelle
Selbst wenn Sie
any
als übergebenpost_status
, erhalten Sie den Beitrag im Ergebnis nicht, wenn alle folgenden Bedingungen erfüllt sind:name
, dh die Schnecke.Lösung
Abfrage explizit für jeden Status. Um beispielsweise nach Stati zu fragen, die nicht
trash
oderauto-draft
(es ist ziemlich unwahrscheinlich, dass Sie diese möchten), können Sie Folgendes tun:quelle