分页不适用于帖子

时间:2019-04-16 作者:Atef

我试图在搜索结果页中仅显示帖子。

所以我只是在中添加了下面的代码functions.php:

function is_type_page() {

    global $post;

    // Check if the current post is a page.
    if ($post->post_type == \'page\') {
        return true;
    } else {
        return false;
  }
}
下面的条件search.php:

<?php while ( have_posts() ) : the_post(); ?>
    <?php if (is_type_page()) continue; ?>
我可以成功地获得帖子,但问题是分页显示不正确,它显示了许多空白页面,似乎仍在查询帖子和页面(只是隐藏页面内容)

我怎样才能解决这个问题?

这是我的代码:

<?php
    while (have_posts()):
        the_post();
?>
<?php
    if (is_type_page())
        continue;
?>

<div class="search-result">
    <div class="image-content">
        <?php
            if (has_post_thumbnail()) {
                the_post_thumbnail(\'large\');
            } else {
         ?>
        <img src="<?php bloginfo(\'template_directory\'); ?>/assets/images/image-not-found.png" />
        <?php
            }
        ?>
    </div>
    <div class="text-content">
        <h4 style="">
            <?php the_title(); ?>
        </h4>
        <p>
            <?php the_excerpt(); ?>
        </p>
    </div>
</div>

<?php endwhile; ?>    

<!-- PAGINATION here below -->

<div class="nav-previous alignleft">
   <?php previous_posts_link(\'Older posts\'); ?>
</div>
<div class="nav-next alignright">
    <?php next_posts_link(\'Newer posts\'); ?>
</div>

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

分页工作不正常,因为它假定您要对所有结果分页。您只是在隐藏页面,此时调整分页已经太晚了。

要解决此问题,您需要使用pre_get_posts filter. 例如:

function search_only_posts($query) {
    if($query->is_search) {
        $query->set(\'post_type\', \'post\');
    }
    return $query;
}

add_filter(\'pre_get_posts\',\'search_only_posts\');
您可能需要添加各种检查,如is_admin()is_main_query() 因此,您只需更改站点前端的行为,而不必更改管理区域。

相关推荐

在Get_the_Posts_Pagination函数中编辑分页文本

我想在链接模板中编辑screen\\u reader\\u文本。php我可以在一个主题中这样做,这样它就不会在更新时被覆盖。看起来过滤器是最好的选择,但我找不到关于使用什么过滤器的文档。这是我想从链接模板更改的代码。php: if ( $GLOBALS[\'wp_query\']->max_num_pages > 1 ) { $args = wp_parse_args( $args, array( \'mid_size\' =&