最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

templates - Pagination issue with tag.php

programmeradmin3浏览0评论

I use this code in 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!

     }
}

At first page, we can see every we want, but in another page returns 404 not found!
Any idea?

I use this code in 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!

     }
}

At first page, we can see every we want, but in another page returns 404 not found!
Any idea?

Share Improve this question edited Sep 5, 2016 at 10:14 fuxia 107k39 gold badges255 silver badges459 bronze badges asked Sep 5, 2016 at 10:00 Prince DariushPrince Dariush 158 bronze badges
Add a comment  | 

1 Answer 1

Reset to default 1

Never re-do the main query. Hook into pre_get_posts and change it. The following needs to go in your functions.php (putting in the template will mean it runs too late):

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',
        ]);
    }
});

And now your template code should just be:

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

        // your code!
    }
}
发布评论

评论列表(0)

  1. 暂无评论