列出特定类别的所有附件

时间:2016-02-21 07:12:10

标签: php wordpress attachment

我想使用此脚本列出特定类别帖子的所有附件路径:

<?php
    $args = array( 
        'post_type'     => 'attachment', 
        'numberposts'   => -1,
        'category'      => 61
    ); 
    $the_attachments = get_posts( $args );
    if ($the_attachments) {
        foreach ( $the_attachments as $post ) {
            setup_postdata($post);
            echo get_attached_file( $post->ID ) . "<br />";
        }
    } wp_reset_query();
    ?>

但问题是除非我删除'category'arg,否则它不会做任何事情,在这种情况下它会显示所有附件路径。但我只希望它属于第61类。

我已经进行了三次检查,确实有一些帖子包含61类附件。

我做错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:3)

类别不是attachment帖子类型的分类。 postattachment是两种不同的帖子类型,category附加到post,而attachmentspost的子项。

首先获取该类别中的所有帖子

$cat_posts = get_posts(array(
    'category' => 61,
    'numberposts' => -1
));

创建帖子ID数组,以便我们可以在WP_Query

中使用
$parent_ids = array_map('get_post_ids', $cat_posts);

function get_post_ids($post_obj) {
    return isset($post_obj->ID) ? $post_obj->ID : false;
}

现在获取所有父ID的所有子项

$the_attachments = get_posts(array(
    'post_parent__in' => $parent_ids,
    'numberposts' => -1,
    'post_type' => 'attachment'
));

显示附件

if ($the_attachments) {
    foreach ( $the_attachments as $my_attachment ) {
        echo wp_get_attachment_image($my_attachment->ID);
    }
}
  

注意:post_parent__in仅适用于版本3.6