Pagination issue with tag.php

时间:2016-09-05 作者:Prince Dariush

我在中使用此代码tag.php:

 global $wp_query;
     $paged = (get_query_var(\'paged\')) ? get_query_var(\'page\') : 1;
     $termsss = $wp_query->queried_object;
     $my_argsss = array (
        \'post_type\' => array(\'pavilion\',\'post\',\'catalog\',\'tenders\',\'services\'),
        \'tag\' => $termsss->slug,
        \'posts_per_page\' =>\'20\',
        \'paged\' => $paged
     );

    $wp_query = new WP_Query();
    $wp_query -> query ($my_argsss);

     if ( $wp_query->have_posts() ) {
     while ( $wp_query->have_posts() ) { $wp_query->the_post(); 

     // your code!

     }
}
在第一页,我们可以看到我们想要的每一个,但在另一页返回404未找到
有什么想法吗?

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

永远不要重新执行主查询。钩入pre_get_posts 然后改变它。在您的functions.php (输入模板将意味着运行太晚):

add_action( \'pre_get_posts\', function ( $wp_query ) {
    if ( $wp_query->is_main_query() && $wp_query->is_tag() ) {
        $wp_query->set( \'posts_per_page\', 20 );
        $wp_query->set( \'post_type\', [
            \'pavilion\',
            \'post\',
            \'catalog\',
            \'tenders\',
            \'services\',
        ]);
    }
});
现在,您的模板代码应该是:

if ( have_posts() ) {
    while ( have_posts() ) {
        the_post(); 

        // your code!
    }
}

相关推荐

将wp_Query替换为wp_User_Query

我在插件中制作了一些订阅者档案和单曲(个人资料页),其中我还包括了一个“用户单曲”模板,通过template_include. 不过,我正在尝试从插件中删除一些模板,以使其使用主题模板。我用了locate_template( \'single.php\' ) 从活动主题中选择单个模板。我没有使用全局wp_query 在本例中显示我的内容,但页面显示了基于查询默认值的循环(十篇帖子)。我想知道的是,我是否可以完全放弃默认查询,用wp_user_query 我可以将查询到的用户ID输入其中。然后我想筛选the