使用自定义查询的页面上的所有博客数据为页面2及以后的页面提供404

时间:2020-06-13 作者:Satish Gupta

下面是我的代码page_{slug}.php. 第一页工作正常,但在1页之后,所有页面都出现404错误。主查询分页工作正常,但不支持自定义查询。请帮忙。

<?php
            $current_page = (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1;
            $per_page = \'2\';
            $testimonial_args = array(
                \'post_type\' => \'blog_post\',
                \'posts_per_page\' => $per_page,
                \'paged\' => $current_page,
            );
            $testimonials = new WP_Query($testimonial_args);
            // echo "<pre>";
            // print_r($wp_query);die;
            ?>
            <?php if ($testimonials->have_posts()) : $i = 1; ?>
                <?php while ($testimonials->have_posts()) : $testimonials->the_post(); ?>

                    <div class="col-lg-4 col-sm-6">

                        <div class="testimonial-card">

                            <div class="headline">
                                <?php the_title(); ?>
                                <span><?php echo the_title(); ?></span>
                            </div>

                        </div>

                    </div>

                    <?php $i+=1; ?>
                <?php endwhile; ?>

                <div class="pagination">
                    <?php                    
                        $big = 999999999; // need an unlikely intege

                        echo paginate_links( array(
                            \'base\' => str_replace( $big, \'%#%.html\', esc_url( home_url( \'/<slug>/page/\' . $big ) ) ),
                            \'format\' => \'?paged=%#%\',
                            \'current\' => max( 1, get_query_var(\'paged\') ),
                            \'total\' => 6
                        ) );
                    ?>
                </div>
            <?php else : ?>

                <h2 class="center">Testimonials Not Found</h2>
                <p class="center">Sorry, but there are no testimonials, check back later!</p>

        <?php endif; ?>

1 个回复
SO网友:Sally CJ

我最初以为您在页面上使用问题中的代码(类型为page), 但是,如果您实际上是在基于存档的页面(例如主页、分类页面等)上使用该代码,则404 错误是正常的。无法对基于存档的页面进行辅助/自定义查询分页。嗯,使用默认值时不是paged URL中的查询字符串。

因此,一种可能的解决方案是使用页面并在其中创建自定义循环&mdash;基本上,在您进行了我在原始答案中提到的更改之后,问题中的代码就可以工作了。一、 e.:

更改base 您的paginate_links() 电话:

// change from this
\'base\' => str_replace( $big, \'%#%.html\', esc_url( home_url( \'/<slug>/page/\' . $big ) ) )
// to this
\'base\' => str_replace( $big, \'%#%\', esc_url( get_pagenum_link( $big ) ) )
base, 您还需要更改\'total\' => 6\'total\' => $testimonials->max_num_pages. (更多详细信息here)

但如果您确实想自定义主查询,请使用pre_get_posts hook.

因此,例如,如果您的主页设置为显示最新的帖子,但您希望只包含该类型的帖子blog_post, 然后你可以简单地把它添加到你的主题中functions.php 文件:

add_action( \'pre_get_posts\', function ( $query ) {
    if ( ! is_admin() && $query->is_main_query() && is_home() ) {
        $query->set( \'post_type\', \'blog_post\' );
        $query->set( \'posts_per_page\', 2 );
    }
} );
这就是你真正需要的。一、 e.无需担心分页,因为一个好的主题总是包括主页和其他基于归档的页面上的主查询的工作分页。

相关推荐

Editing Category Pages

我想让搜索引擎机器人为我的分类页面编制索引,但似乎没有索引,follow标签是由我的主题函数自动添加的我希望分类页允许索引,同时保留noindex,follow for search和404页下面是它们的一部分(functions.php)/*Add noindex to low value pages*/ function add_noindex_tags(){ # Get page number for paginated archives. $paged =