查询所有特定MIME类型的已发布帖子和附件

时间:2017-10-12 作者:Sisir

我只需要将特定附件(PDF)与其他CPT一起添加到查询中。但当我向查询中添加mime类型值时,任何其他post类型都会被过滤掉。

以下是查询参数

$args = [
    \'post_type\' => [\'any\', \'attachment\'],
    \'post_status\' => [\'publish\', \'inherit\'],
    \'post_mime_type\' => [\'application/pdf\'],
    \'posts_per_page\' => 10
];
如何获取其他带有特定mime类型附件的帖子类型?(本例中仅pdf)

1 个回复
最合适的回答,由SO网友:Sisir 整理而成

首先,如果any 用于post_type 字段不能像问题中那样在数组中给定任何其他值。下面是修改后的参数

$args = [
    \'post_type\' => array_values(get_post_types([\'public\' => true])),
    \'post_status\' => [\'publish\', \'inherit\'],
    \'posts_per_page\' => 10
];

Use posts_where filter

add_filter(\'posts_where\', \'add_search_mime_types\');
$query = new WP_Query( $args );
remove_filter(\'posts_where\', \'add_search_mime_types\');


function add_search_mime_types($where){
    $where .= \' AND post_mime_type IN("application/pdf","") \';
    return $where;
}
SQL查询中包含post类型的空字符串,而不是attachment.

结束