Terima kasih kepada Ivaylo untuk kode ini, yang didasarkan pada jawaban Bainternet.
Fungsi pertama di bawah ini,, get_term_top_most_parent
menerima istilah dan taksonomi dan mengembalikan orang tua tingkat atas istilah (atau istilah itu sendiri, jika itu tanpa orangtua); fungsi kedua ( get_top_parents
) bekerja di loop, dan, diberi taksonomi, mengembalikan daftar HTML dari orang tua tingkat atas dari persyaratan posting.
// Determine the top-most parent of a term
function get_term_top_most_parent( $term, $taxonomy ) {
// Start from the current term
$parent = get_term( $term, $taxonomy );
// Climb up the hierarchy until we reach a term with parent = '0'
while ( $parent->parent != '0' ) {
$term_id = $parent->parent;
$parent = get_term( $term_id, $taxonomy);
}
return $parent;
}
Setelah Anda memiliki fungsi di atas, Anda dapat mengulang hasil yang dikembalikan oleh wp_get_object_terms
dan menampilkan orang tua teratas setiap istilah:
function get_top_parents( $taxonomy ) {
// get terms for current post
$terms = wp_get_object_terms( get_the_ID(), $taxonomy );
$top_parent_terms = array();
foreach ( $terms as $term ) {
//get top level parent
$top_parent = get_term_top_most_parent( $term, $taxonomy );
//check if you have it in your array to only add it once
if ( !in_array( $top_parent, $top_parent_terms ) ) {
$top_parent_terms[] = $top_parent;
}
}
// build output (the HTML is up to you)
$output = '<ul>';
foreach ( $top_parent_terms as $term ) {
//Add every term
$output .= '<li><a href="'. get_term_link( $term ) . '">' . $term->name . '</a></li>';
}
$output .= '</ul>';
return $output;
}
get_term_children( $term, $taxonomy )
( dokumentasi ) bawaan . Jika Anda ingin mendapatkan semua anak dari orang tua tingkat atas istilah yang diberikan, Anda bisa lulus hasil di atas ke dalamnya, seperti ini:get_term_children( get_term_top_most_parent( $term, $taxonomy ), $taxonomy )
.get_ancestors
fungsi bawaan WP , yang baru dan tidak didokumentasikan dengan baik ketika jawabannya ditulis. Saya akan memposting jawaban baru ketika saya punya waktu untuk menguji.Sejak 3.1.0,
get_ancestors()
tersedia. Ini mengembalikan berbagai leluhur dari terendah ke tertinggi dalam hierarki.sumber
Berikut adalah fungsi sederhana yang akan membuat Anda mendapatkan istilah induk paling banyak dari istilah apa pun yang diberikan:
Setelah Anda memiliki fungsi ini, Anda bisa mengulang hasil yang dikembalikan oleh
wp_get_object_terms
:sumber
sumber
Saya memiliki masalah yang sama dan saya menyelesaikannya dengan mudah. Lihat ini:
Tentukan
$taxonomy
. Ini bisa menjadi siput dari taksonomi yang Anda inginkan untuk mendapatkan data. Setelah melakukan ini, Anda cukup melakukan ini:Sekarang Anda punya sesuatu seperti ini:
Dan Anda dapat menggunakan
$parentObj
untuk mendapatkan siput, nama, id, apa pun. Hanya dengan menggunakan$parentObj->slug
atau$parentObj->name
sebagai contoh.sumber
Cara termudah:
sumber
Mungkin ini membantu:
get_ancestors( $object_id, $object_type );
codex.wordpress.org
sumber