Apakah ada cara mudah untuk meminta posting yang ditandai dengan istilah apa pun dari taksonomi tertentu?
Saya tahu teknik ini:
$custom_taxonomy_query = new WP_Query(
array(
'taxonomy_name' => 'term_slug',
)
);
Tapi saya ingin memberikan wildcard sebagai ganti term_slug, atau mungkin hanya string kosong. Maka itu akan memberi saya semua posting yang ditandai oleh istilah apa pun dalam taksonomi itu, bukan hanya satu istilah tertentu.
Terima kasih atas bantuan Anda, Dave
Sesuatu seperti ini mungkin bekerja:
Anda pada dasarnya meminta setiap pos yang ditetapkan untuk istilah apa pun dalam your_custom_taxonomy.
sumber
Hai @ Dave Morris:
Anda benar, WordPress memutuskan jika Anda tidak memiliki istilah mereka hanya akan mengabaikan taksonomi Anda.
Ada tiga (3) pendekatan utama yang bisa Anda coba:
Gunakan kueri SQL lengkap dengan
$wpdb->get_results()
,Dapatkan daftar
$post->ID
s untuk semua posting di taksonomi Anda dan kemudian sampaikan dengan menggunakan'post__id'
argumen, atauBuat anotasi SQL yang digunakan oleh
WP_Query
dengan salah satu kait yang memungkinkan Anda menambahkan SQLINNER JOIN
referensi tabel taksonomi.Saya mencoba untuk menghindari SQL lengkap di WordPress sampai tidak dapat membantu atau hanya mengembalikan daftar ID. Dan dalam hal ini saya akan menghindari menarik daftar
$post-ID
s untuk digunakan dengan'post__id'
argumen karena dapat mengalami masalah kinerja dan bahkan masalah memori jika Anda memiliki banyak posting. Sehingga meninggalkan kita dengan # 3.Saya telah membuat kelas untuk memperpanjang yang
WP_Query
disebutPostsByTaxonomy
yang menggunakan'posts_join
'kait. Anda bisa melihatnya di sini:Anda akan memanggil kelas ini seperti yang Anda lihat di bawah. Argumen
'taxonomy'
ini diperlukan tetapi Anda dapat melewati (semua?) Dari parameter lain yangWP_Query
mengharapkan juga, seperti'posts_per_page'
:Anda dapat menyalin
PostsByTaxonomy
kelas kefunctions.php
file tema Anda , atau Anda dapat menggunakannya dalam.php
file plugin yang mungkin Anda tulis.Jika Anda ingin mengujinya dengan cepat, saya telah memposting versi mandiri dari kode ke Gist yang dapat Anda unduh dan salin ke root server web Anda sebagai
test.php
, modifikasi untuk kasus penggunaan Anda, dan kemudian permintaan dari browser Anda menggunakan URL sepertihttp://example.com/test.php
.MEMPERBARUI
Untuk menghilangkan Posting Lengket dari pos yang termasuk dalam kueri, coba ini:
Atau jika penting bagi Anda bahwa
PostsByTaxonomy
kelas tidak pernah menyertakan posting tempel Anda bisa memasukkannya ke dalam konstruktor:PEMBARUAN 2
Setelah memposting di atas saya belajar 'caller_get_posts' akan usang dan
'ignore_sticky_posts'
akan digunakan di WordPress 3.1.sumber
caller_get_posts=1
dan mereka harus pergi: codex.wordpress.org/Function_Reference/… Semoga ini bisa membantu.if(isset($query->posts_by_taxonomy))
adalah trik yang bagus untuk menggabungkan metodologi berorientasi objek dengan metodologi kait WordPress.Anda seharusnya bisa mengatur taksonomi dan meniadakan untuk memasukkan istilah ..
Misalnya.
Yang hampir sama dengan permintaan yang dilakukan oleh arsip taksonomi.
sumber
WP_Query
buang saja.WP_Query
sayangnya tidak diimplementasikan dengan cara yang elegan. Ini hampir 1.200 baris kasus khusus hard-coded.