使用get\\u the\\u terms()时,它会返回一个term对象。其中一个字段是“parent”,它存储术语parent的ID。因此,您可以将当前术语的父项与要查找的父项进行比较。
$desired_parent_name = \'fruits\';
$desired_parent_id = get_term_by(\'name\', $desired_parent_name)->term_id;
foreach ($terms as $term) {
if $term->parent == $desired_parent_id {
//do something here
echo $term->name;
}
}
老实说,我不太理解这行代码>$term=array\\u shift($terms);因为我看不出你在用这个术语变量做什么。
有两种方法可以找到所有具有匹配帖子的术语。一是找到所有的帖子并检查它们的所有条款,这就是你正在做的。另一个是查找所有术语,看看它们是否有匹配的帖子。使用哪一个可能取决于你有多少术语和多少帖子,但我倾向于认为循环使用术语更快。
下面是如何获取父级“fruit”的所有术语,然后查看您的类型中有哪些帖子。
$allterms = get_terms( array( \'parent\' => $desired_parent_id ) );
foreach ($allterms as $term) {
$args = array(
\'post_type\' => \'video_cpt\',
\'post_status\' => \'publish\',
\'posts_per_page\' => 1,
\'tax_query\' => array ( array (
\'taxonomy\' => \'video_categories\',
\'terms\' => $term->term_id,
))
\'fields\' => \'ids\'
); //the fields parameter is to return just the post ids rather than the whole posts
$video_query = new WP_Query( $args );
if ($video_query->have_posts()) {
//there\'s videos that match this term, so do something
echo $term->name;
}
}