Saya membuat menu pilih usia di admin, diisi dari taksonomi age
. Taksonomi bersifat hierarkis sebagai berikut:
- 18-25 (orang tua, ID 183)
- 18 (anak)
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26-30 (orang tua, ID 184)
- 26
- 27
- 28
- 29
- 30
Saya hanya ingin mendaftarkan anak-anak (18, 19 dll) dan bukan orang tua (18-25, 26-30) dll. Saat ini saya menggunakan get_terms
dengan parent
argumen, tetapi tidak menerima lebih dari 1 ID orang tua. Inilah yang saya miliki sejauh ini, yang menunjukkan anak-anak dari 18-25.
$ages = get_terms( 'age', array(
'hide_empty' => 0,
'parent' => '183',
));
Inilah yang ingin saya lakukan, tetapi tidak didukung. Saya juga sudah mencobanya dengan array tetapi tidak berhasil.
$ages = get_terms( 'age', array(
'hide_empty' => 0,
'parent' => '183,184',
));
Saya melihat ada fungsi get_term_children tapi saya tidak yakin bagaimana cara menggunakan ini karena sepertinya hanya menerima satu nilai juga. Contoh: Dalam contoh ini ia akan membuat daftar tidak terurut tetapi saya dapat memodifikasi untuk menu pilih.
<?php
$termID = 183;
$taxonomyName = "age";
$termchildren = get_term_children( $termID, $taxonomyName );
echo '<ul>';
foreach ($termchildren as $child) {
$term = get_term_by( 'id', $child, $taxonomyName );
echo '<li><a href="' . get_term_link( $term->name, $taxonomyName ) . '">' . $term->name . '</a></li>';
}
echo '</ul>';
?>
sumber
get_terms
dua kali dan gabungkan dua array hasil?get_terms
panggilan). Pertanyaan Anda berbunyi seolah-olah Anda menginginkan semua anak dari 2 syarat orang tua tertentu ..Jawaban:
Ini seharusnya bekerja untuk Anda:
sumber
$term->name
tidak validget_term_link()
, hanya menerima ID istilah, siput atau objekAnda juga bisa:
Saya mencatat bahwa orang tua memiliki bidang "induk" sama dengan 0, dan seorang anak memiliki id induknya di dalamnya.
sumber
wpse_exclude_top
parameter yang ditambahkan ke argumen kueri ;-). Namun saya setuju, ini lebih cepat dari jawaban yang diterimawpse_exclude_top
danexclude_top
tetapi tidak menemukannya. Juga tidak google tahu tentang itu. Di mana itu didokumentasikan?Kami dapat mengecualikan orang tua tingkat atas dengan memfilter mereka menggunakan
terms_clauses
filter untuk mengubah kueri SQL sebelum dijalankan. Dengan cara ini kita tidak perlu melewati orang tua diforeach
loop terakhir karena mereka tidak dalam array istilah yang dikembalikan, ini menghemat pekerjaan dan pengkodean yang tidak perluAnda dapat mencoba yang berikut ini:
Untuk mengecualikan orang tua tingkat atas, kami sekarang dapat meneruskan
'wpse_exclude_top' => 1
dengan berbagai argumen kami.wpse_exclude_top
Parameter baru didukung oleh filter di atasHanya sebuah catatan,
get_term_link()
jangan tidak menerima nama istilah, hanya, siput, ID atau objek istilah lengkap. Untuk kinerja, selalu selalu meneruskan objek jangka keget_term_link()
jika objek jangka tersedia ( seperti dalam kasus ini )sumber
Mengapa Anda tidak bisa mengatur
childless
argumen itu menjadi benar?sumber
childless
argumen ke true berarti Anda hanya bisa masuk 1 level, jadi ini tidak berfungsi untuk taksonomi dengan 3 level atau lebih.Jika Anda menampilkan beberapa anak orang tua, Anda dapat mencoba ini. Tampilkan sebutkan istilah id istilah anak.
sumber