我使用以下代码输出属于tag
:
add_filter(\'pre_get_posts\', \'query_post_type\');
function query_post_type($query) {
if(is_category() || is_tag() && empty( $query->query_vars[\'suppress_filters\'] ) ) {
$post_type = get_query_var(\'post_type\');
if($post_type) :
$post_type = $post_type;
else:
$post_type = array(\'btp_work\'); // replace cpt to your custom post type
$query->set(\'post_type\',$post_type);
endif;
return $query;
}
}
如果
tag
少于10篇文章(我的分页设置为10篇文章),例如,如果我转到
mysite.com/tag/cars
它显示标记
cars
有
问题是当有许多自定义帖子与tag
. 这个tag
页面添加分页,但没有显示以下内容的自定义帖子:
知道这里有什么问题吗?
似乎WP知道有多少帖子,因为它显示了四页并创建了分页,但奇怪的是,没有任何自定义帖子。。。
最合适的回答,由SO网友:Pieter Goosen 整理而成
您的代码有几个缺陷,我现在不想详细介绍。下面是一个简短的列表
pre_get_posts
是一个动作在任何类型的存档页面上,使用时都需要确保只针对主查询和前端pre_get_posts
您的语法很难调试,大多数代码编辑器都不支持。虽然if (): else : endif;
是有效的php,不建议使用,因为调试时有问题。使用合适的卷发,如if () { } else { }
大部分代码没有多大意义。请查看我的代码并与您的代码进行比较
您可以按如下方式重写代码
add_action( \'pre_get_posts\', function ( $q )
{
if ( !is_admin() // Make sure you only target the front end
&& $q->is_main_query() // Only target the main query
&& $q->is_tag() // Only target the tag pages
) {
$q->set( \'post_type\', array( \'post\', \'btp_work\' ) ); // Change as necessary
}
});