Custom posts - tag pagination

时间:2015-06-29 作者:wpuser

我使用以下代码输出属于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 页面添加分页,但没有显示以下内容的自定义帖子:

enter image description here

知道这里有什么问题吗?

似乎WP知道有多少帖子,因为它显示了四页并创建了分页,但奇怪的是,没有任何自定义帖子。。。

1 个回复
最合适的回答,由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
    }
});

结束

相关推荐

Remove all paragraph tags

因为WordPress可视化编辑器不能很好地处理现有的标记,所以我的内容中段落都很混乱。因此,我想删除段落标记,同时保留项目符号、超链接和粗体格式,以便我可以重新导入我的内容,然后希望使用可视化编辑器手动将其隔开。最好的方法是什么?