在wordpress中按页面搜索结果

时间:2014-08-09 07:05:49

标签: wordpress

我正在尝试在Wordpress网站上搜索结果。它提供了帖子信息。但我想按页面搜索搜索结果。

<?php if (have_posts()) : ?>
<?php while(have_posts()) : the_post(); ?>
<?php get_template_part( 'post' , 'search') ?>
<?php endwhile; else : ?>

这是search.php

中给出的默认代码

我在上面的代码之前添加了一个代码用于此操作。

 <?php
        $args = array(
            'post_type'=> 'page',
            'order'    => 'ASC'
        );
        query_posts( $args );
    ?>

但它提供了随机结果,并没有进入下一页。

1 个答案:

答案 0 :(得分:2)

使用pre_get_posts过滤器更改您的搜索查询。将以下内容添加到functions.php

function search_filter($query) {
  if ( !is_admin() && $query->is_main_query() ) {
    if ($query->is_search) {
      $query->set('post_type', 'page');
    }
  }
}

add_action('pre_get_posts','search_filter');

仅提供额外信息,永远不会使用query_posts构建自定义查询。在大多数情况下,分页失败就像你的情况一样,它也是资源密集型,因此很慢,它改变了主要的主要查询

  

注意:此功能并非由插件或主题使用。如后面所述,有更好的,更高性能的选项来改变主查询。 query_posts()是一种过于简单化和有问题的方法来修改页面的主要查询,方法是用新的查询实例替换它。它是低效的(重新运行SQL查询)并且在某些情况下会彻底失败(特别是在处理帖子分页时)。

如果您无法使用pre_get_posts更改主要查询,并且必须使用自定义查询,请改用WP_Queryget_posts

如需其他阅读,请查看my answer

上的this post