Saya membuat dashboard ujung depan di mana saya harus menunjukkan semua posting oleh pengguna saat ini. Jadi, saya perlu menunjukkan pos di semua negara bagian, terutama published
, trashed
dan pending
. Saya sekarang menggunakan permintaan sederhana tetapi hanya mengembalikan posting yang diterbitkan.
$query = array(
'post_type' => 'my-post-type',
'post_author' => $current_user->ID
);
query_posts($query);
Adakah yang bisa membantu? Apa lagi yang harus saya lakukan?
query-posts
wp-query
post-status
Sisir
sumber
sumber
post_status
parameter , yaitu.'post_status' => 'any'
?WP_Query
pre_get_posts
atauget_posts
bukanquery_posts
. Jangan pernah gunakanquery_posts
WP_Query
untuk front-end, danget_posts
untuk permintaan admin karena ada masalah denganwp_reset_postdata
(lihat catatan dan tiket tentang masalah ini).Jawaban:
Anda dapat menggunakan parameter post_status:
Saya tidak yakin menerima 'any' jadi gunakan dan susun dengan semua jenis yang Anda inginkan:
sumber
get_post_stati()
untuk mendapatkan semua status, termasuk yang khusus.query_posts
panggilan ...'post_status' => array( '!inherit' );
(untuk menunjukkan post_status selain pewarisan)'post_status' => array_diff(get_post_stati(), ['inherit']);
Ada cara sederhana, bagaimana cara mendapatkan semua posting dengan status apa pun:
Sekarang Anda dapat mengulangi seluruh posting:
sumber
The
WP_Query
metode kelas->query()
menerima sebuahany
argumen untukpost_status
. Lihatwp_get_associated_nav_menu_items()
bukti.Hal yang sama berlaku untuk
get_posts()
(yang hanya pembungkus untuk panggilan di atas).sumber
auto-draft
dantrash
dikecualikan.query_var
... untuk alasan apa pun orang akan melakukannya. Sidenote: The jamak status pos ... .WP_Query#get_posts()
panggilanget_post_stati()
mana yang menyaring$wp_post_statuses
nilai di manaexclude_from_search
benar maka tidak termasuk posting dengan status ini dari kueri. Ada proses serupa untuk jenis posting ketika post_type diatur ke 'apa saja'.$wp_post_statuses
properti, saya harus mengakui bahwa Anda benar :)Dalam kebanyakan kasus, Anda dapat menggunakan
get_posts()
dengan'any'
parameter untuk ini:Tetapi dengan cara ini Anda tidak akan mendapatkan kiriman dengan status
trash
danauto-draft
. Anda harus menyediakannya secara eksplisit, seperti ini:Atau Anda dapat menggunakan fungsi get_post_stati () untuk memberikan semua status yang ada secara eksplisit:
sumber
Meskipun Anda lulus
any
sebagaipost_status
, Anda tetap tidak akan mendapatkan pos di hasilnya jika semua kondisi berikut ini benar:name
, yaitu siput.Larutan
Permintaan secara eksplisit untuk setiap status. Misalnya, untuk meminta stati yang bukan
trash
atauauto-draft
(sepertinya Anda tidak menginginkannya), Anda dapat melakukan sesuatu seperti ini:sumber