Ini kode saya
$my_wp_query = new WP_Query();
$all_wp_pages = $my_wp_query->query(array('post_type' => 'page','post_parent'=>$parid,'orderby'=>'title','order'=>'ASC' ));
Ini hanya menampilkan sub halaman tingkat pertama. Saya membutuhkan semua sub halaman, sub halaman ... dan semua. Saya mencari solusi dan saya bisa mendapatkan semua sub halaman menggunakan get_pages dan wp_list_pages.
Tetapi saya benar-benar perlu mengurutkan pesanan berdasarkan nilai meta pos kustom. Jadi saya harus menggunakan permintaan khusus.
tolong bantu. Terima kasih
wp-query
query-posts
query
phpuser
sumber
sumber
Jawaban:
Kenapa tidak pakai saja
get_pages()
?misalnya
Tetapi jika itu benar-benar harus sebagai
WP_Query()
objek, gunakan metode serupa:sumber
WP_Query()
?Masalah
Apa yang Anda punyai kesulitan untuk memahami adalah "Bagaimana saya melakukan X?" Ini bukan tindakan 1 langkah, ini adalah proses multi-langkah, dan perlu dipisah-pisahkan.
Anda tidak perlu melakukan ini:
Anda perlu melakukan ini:
Solusi Umum
Jadi, untuk memahami cara melakukannya hingga Anda mencapai akhir, tanpa hardcoding, Anda perlu memahami fungsi rekursif.
misalnya
Menerapkan Rekursi Untuk Masalah Ini Sebagai Solusi
Jadi orang tua Anda
$parid
, dan meta pos Anda memiliki kunci$metakey
.Mari kita berikan fungsi untuk mengambil anak-anaknya.
Kemudian kita akan mengurutkan array $ children, kunci akan menjadi ID posting, dan nilainya akan menjadi nilai meta.
dan mari kita mendefinisikan fungsi sebagai:
Ini memberi Anda array ID dan nilai pos, dipesan dari terendah ke tertinggi. Anda dapat menggunakan fungsi penyortiran PHP lainnya untuk melakukannya dari tertinggi ke terendah.
Sekarang Bagaimana Dengan Anak-Anak?
Di tengah-tengah loop kita, kita perlu membuat panggilan rekursif, melewati anak daripada ID induk.
Jadi ini:
Menjadi ini:
Dengan modifikasi ini fungsi sekarang mengambil anak-anak, anak-anak anak-anak, anak-anak anak-anak ..... dll
Pada akhirnya Anda dapat memotong nilai pada array untuk mendapatkan ID seperti ini:
Dengan menggunakan strategi ini, Anda dapat mengganti nilai kunci meta dengan metrik lainnya, atau menggunakan fungsi rekursif dengan cara lain.
Karena kode lengkap hanya memerlukan beberapa detik pemahaman dasar dan copy paste cepat, saya tidak akan menghina kecerdasan Anda dengan blok kode copy paste penuh kode.
Keuntungan
Masalah yang Akan Anda Temui
Rekomendasi saya
Saya akan merekomendasikan Anda untuk meratakan hierarki halaman Anda atau menggunakan taksonomi sebagai gantinya. Misalnya, jika Anda memberi peringkat pada posting, miliki taksonomi Peringkat Halaman dengan ketentuan 1,2,3,4 dan 5, dll. Ini akan memberi Anda daftar posting di luar kotak.
Atau, gunakan menu nav dan bypass masalah ini sepenuhnya
sumber
Secara rekursif dapatkan semua halaman saat ini
Berikut ini adalah pendekatan rekursif menggunakan
get_children
. Masukkan yang berikut ini difunctions.php
:Bagaimana cara menggunakannya
Gunakan fungsi di atas di mana pun Anda inginkan, misalnya seperti ini:
Fungsi ini mendukung
args
parameter (string atau array kueri) danoutput
tipe (lihat di atas).Jadi Anda juga bisa menggunakannya seperti ini:
Dan karena dependensi
get_children
=>get_posts
=>WP_Query
Anda dapat menggunakan nilai meta, seperti yang awalnya diminta oleh penulis pertanyaan ini.sumber
Tidak yakin apakah ini yang Anda cari, tetapi Anda bisa menggunakan fungsi wp_list_pages, dan menggunakan parameter 'child_of' dan 'depth'.
Lihat halaman berikut pada Codex untuk info lebih lanjut: http://codex.wordpress.org/Function_Reference/wp_list_pages
sumber
Saya telah membuat fungsi rekursif yang membuat semua id anak-anak dari halaman orang tua. Setelah kami memiliki id, kami membuat permintaan untuk halaman dan dapat memesan hasilnya dengan kunci meta / nilai.
Jika Anda perlu mengurutkan anak-anak dengan kunci meta / nilai secara hierarkis, Anda harus meneruskan nilai meta_key dan order_by ke WP_Query di fungsi _get_children_ids (alih-alih WP_Query akhir).
Jika tidak, metode yang lebih sederhana untuk mendapatkan semua id anak adalah:
sumber
SAYA MEMBUAT KERJA INI, HANYA SALIN PASANG KODE KE FILE HALAMAN.PADA ANDA
sumber
$post -> ID
?), B) bukan yang diminta, C) tidak dijelaskan dengan baik.