我不知道这是否可行,但我会尝试解释。
我有自定义帖子类型(广告素材)和分类法(图片排序)。 CPT中的每个帖子都是一个人(一个创意人)。他们可以上传图片并通过选择他们所属的类别('图像排序'分类法)对其进行排序。
有多个广告素材,他们会将图片发布到不同的类别。其中一些是针对所有人的,有些仅针对少数人。
每个广告素材都有自己的页面,其中包含已发布内容的类别的动态列表。我的问题是,如果有一个广告素材发布到了“cat-1'和' cat-2'每个人都会在各自的页面上列出。我想要的只是展示“cat-1'和' cat-2'已发布到这些类别的广告素材。如果其他广告素材已发布到' cat-1'和' cat-3'我只希望那两个出现在他的页面上。
这有意义吗?
<ul>
<?php
$terms = get_terms('image-sort');
if ( $terms && !is_wp_error($terms) ) :
foreach ( $terms as $term ) :
?>
<li><a href="?term=<?php esc_attr_e($term->slug); ?>"><?php esc_html_e($term->name); ?</a></li>
<?php endforeach; endif; ?>
</ul>
答案 0 :(得分:0)
不确定我是否了解你,但如果我这样做,请尝试更换此行:
$terms = get_terms('image-sort');
使用以下行:
$terms = wp_get_object_terms(get_the_ID(), 'image-sort');
修改强>
尝试使用以下代码获取术语:
<?php
// get all attachments of the current post
$attachments = get_children('post_parent=' . get_the_ID() . '&post_type=attachment&post_status=any&posts_per_page=-1');
// we're saving the terms here
$all_terms = array();
// looping through all attachments
foreach( $attachments as $attachment) {
$terms = wp_get_object_terms($attachment->ID, 'image-sort');
if ($terms) {
// looping through all attachment terms and adding them to the main array
foreach ( $terms as $term ) {
$all_terms[$term->term_id] = $term;
}
}
}
?>