根据自定义帖子类型的帖子ID获取附件

时间:2014-08-19 13:37:05

标签: wordpress custom-post-type taxonomy

我不知道这是否可行,但我会尝试解释。

我有自定义帖子类型(广告素材)和分类法(图片排序)。 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>

1 个答案:

答案 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;
        }
    }
}

?>