我想使用此脚本列出特定类别帖子的所有附件路径:
<?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类附件。
我做错了什么?
提前致谢。
答案 0 :(得分:3)
类别不是attachment
帖子类型的分类。 post
和attachment
是两种不同的帖子类型,category
附加到post
,而attachments
是post
的子项。
首先获取该类别中的所有帖子
$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