我有自定义的帖子类型“product”,分类法是“product\\u cat”。有两个儿童术语-音乐和视频。在音乐下,我又有两张儿童专辑和单曲。现在,当我进入音乐类别时,我想了解音乐的所有儿童术语。我正在使用以下代码
<?php $page_id = get_the_id(); ?>
<?php $cat_terms = wp_get_object_terms( $page_id, \'product_cat\' ); ?>
<pre><?php var_dump($cat_terms); ?></pre>
<?php foreach ($cat_terms as $terms ) {?>
<?php $array = (array) $terms; ?>
<section id="engagement-rings">
<div class="container">
<div class="row">
<div class="col-lg-12 col-sm-12 col-md-12 col-xs-12">
<div class="display-rings">
<div class="heading-img text-center"><?php echo $array["name"]; ?></div>
<div class="engagement rings-list clearfix">
<ul class="list-unstyled clearfix">
<?php
$args = array( \'post_type\'=>\'product\',
\'tax_query\' => array(
array(
\'taxonomy\' => \'product_cat\',
\'field\' => \'slug\',
\'terms\' => $array["name"],
)
)
);
$postslist = get_posts( $args );
?>
<?php foreach ($postslist as $post) : ?>
<?php $array1 = (array) $post; ?>
<?php $image = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), \'shop_thumbnail\' ); ?>
<li><a href=""><img src="<?php echo $image[0]; ?>" alt=""></a></li>
<?php endforeach; ?>
</ul>
<a href="#" class="view-all">View all</a>
</div>
</div>
</div>
</div>
</div>
</section>
<?php } ?>
但这是给我的音乐类别和一个孩子,即专辑。但我只想要专辑和单曲。
请帮帮我
最合适的回答,由SO网友:Pieter Goosen 整理而成
我想你应该get_queried_object()
返回当前页的术语。从那里你应该得到分类名称、术语ID和父项。
这是我的逻辑。每当您在家长学期,即音乐或视频,家长都会回来0
. 只有在父术语页面上,才能使用此选项执行代码。
以下是var_dump($cat_terms);
在子页面上
array(0) {
}
这是来自父页面的
array(2) {
[0]=>
int(119)
[1]=>
int(120)
}
119和120是我父母学期的子学期
您有分类名称和术语ID,因此可以使用get_term_children
从您的术语音乐或视频中获取子术语。正如我所说,您只想在父页面上执行此操作。但这一切都取决于你。
这是代码
<?php
$queried_object = get_queried_object(\'term\');
$tax = $queried_object->taxonomy;
$term = $queried_object->term_id;
$parent = $queried_object->parent;
if( 0 == $parent ) {
$cat_terms = get_term_children( $term, $tax );
?>
<pre><?php var_dump($cat_terms); ?></pre>
<?php
//<---DO SOMETHING ON PARENT TERM PAGE--->
}else{
//<---DO SOMETHING ON CHILD TERM PAGE
}
?>