Tworzę pulpit nawigacyjny, w którym muszę pokazać wszystkie posty bieżącego użytkownika. Tak, muszę pokazać posty we wszystkich stanach, głównie published
, trashed
a pending
. Teraz używam prostego zapytania, ale zwraca tylko opublikowane posty.
$query = array(
'post_type' => 'my-post-type',
'post_author' => $current_user->ID
);
query_posts($query);
Czy ktoś może pomóc? Co jeszcze muszę zrobić?
query-posts
wp-query
post-status
Sisir
źródło
źródło
post_status
parametru , tj.'post_status' => 'any'
?WP_Query
pre_get_posts
lubget_posts
zamiastquery_posts
. Nigdy nie używajquery_posts
WP_Query
z interfejsu użytkownika iget_posts
zapytań administracyjnych, ponieważ występuje problemwp_reset_postdata
(patrz uwaga i bilet na ten temat).Odpowiedzi:
Możesz użyć parametru post_status:
Nie jestem pewien, czy akceptuje „dowolny”, więc używaj i tablicuj wszystkie typy, które chcesz:
źródło
get_post_stati()
aby uzyskać wszystkie statusy, w tym niestandardowe.query_posts
rozmowę ...'post_status' => array( '!inherit' );
(aby wskazać stan post_status inny niż dziedziczenie)'post_status' => array_diff(get_post_stati(), ['inherit']);
Jest prosty sposób, jak uzyskać wszystkie posty o dowolnym statusie:
Teraz możesz iterować wszystkie posty:
źródło
Metoda
WP_Query
klasy->query()
akceptujeany
argument dlapost_status
. Zobaczwp_get_associated_nav_menu_items()
dowód.To samo dotyczy
get_posts()
(co jest tylko opakowaniem dla powyższego połączenia).źródło
auto-draft
itrash
są wykluczone.query_var
... z jakiegoś powodu ktoś miałby to robić. Sidenote: Liczba mnoga od statusu postu jest ... .WP_Query#get_posts()
wywołania,get_post_stati()
które filtrują$wp_post_statuses
wartości, gdzieexclude_from_search
jest prawda, wyklucza posty z tymi statusami z zapytania. Podobny proces dotyczy typów postów, gdy typ post_ty jest ustawiony na „any”.$wp_post_statuses
nieruchomości, muszę przyznać, że masz rację :)W większości przypadków można użyć
get_posts()
z'any'
parametrem do tego:Ale w ten sposób nie będziesz otrzymywać postów ze statusem
trash
iauto-draft
. Musisz podać je jawnie, w następujący sposób:Możesz też użyć funkcji get_post_stati (), aby jawnie podać wszystkie istniejące statusy:
źródło
Nawet jeśli zdasz
any
jakopost_status
, nadal nie otrzymasz postu, jeśli spełnione są wszystkie następujące warunki:name
, np. Ślimaka.Rozwiązanie
Zapytanie wprost dla każdego statusu. Na przykład, aby zapytać o statystyki, które nie są
trash
lubauto-draft
(jest mało prawdopodobne, że ich potrzebujesz), możesz zrobić coś takiego:źródło