前言说明

WordPress内置搜索功能弱鸡已经不是什么秘密了, 搜索时搜索算法过于字面意义,在这篇文章中,我们会分享几个非常有用的WordPress搜索代码函数,它们将有助于提高用户的搜索准确性,对用户更加友好。

改善WordPress搜索功能的几种优化方法插图

优化参考

如何从WordPress搜索结果中排除帖子或页面

如果您希望控制哪些文章或页面应从WordPress搜索结果中排除,您要做的就是将下面的代码复制并粘贴到functions.php文件中。

function SearchFilter($query) {
    if ($query->is_search) {
        $query->set('cat','0,1');
    }
    return $query;
}
add_filter('pre_get_posts','SearchFilter');

说明:在此代码段中,ID为0和1的文章将被排除。 进行相应的编辑以适合您的需求。

使用WordPress下拉分类搜索表单

您可以提供给WordPress搜索允许您的读者通过指定特定分类来筛选搜索结果。 这可以通过使用包含所有分类标题的简单下拉列表来实现。您所需要做的就是用以下代码段替换标准的WordPress搜索表单(在searchform.php中找到):

<form role="search" method="get" id="searchform" action="<?php bloginfo('siteurl'); ?>">
  <div>
    <label class="screen-reader-text" for="s">Search for:</label>
    <input type="text" value="" name="s" id="s" /> 
    in <?php wp_dropdown_categories( 'show_option_all=All Categories' ); ?> 
    <input type="submit" id="searchsubmit" value="Search" />
  </div>
</form>

搜索特定的WordPress文章类型

您能够使用此小代码来让wordpress搜索特定的文章类型。您所要做的就是将下面的代码复制并粘贴到functions.php文件中。

function SearchFilter($query) {
  if ($query->is_search) {
    // Insert the specific post type you want to search
    $query->set('post_type', 'feeds');
  }
  return $query;
}
// This filter will jump into the loop and arrange our results before they're returned
add_filter('pre_get_posts','SearchFilter');

用jQuery高亮显示WordPress搜索词

为了使您的搜索结果对读者来说更清晰一些,您可以使用此代码来高亮显示搜索结果中的搜索词。将以下代码复制并粘贴到主题的functions.php文件中。

function ie_set_query() {
  $query  = attribute_escape(get_search_query());
  if(strlen($query) > 0){
    echo '
      <script type="text/javascript">
        var ie_query  = "'.$query.'";
      </script>
    ';
  }
}
function ie_init_jquery() {
  wp_enqueue_script('jquery');
}
add_action('init', 'ie_init_jquery');
add_action('wp_print_scripts', 'ie_set_query');

然后将此代码添加到您的header.php文件中,位于/head标记之前:

<style type="text/css" media="screen">
    .ie { background: #D3E18A; }
  </style>
  <script type="text/javascript">
  jQuery.fn.extend({
    highlight: function(search, insensitive, ie_class){
      var regex = new RegExp("(<[^>]*>)|(\\b"+ search.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1") +")", insensitive ? "ig" : "g");
      return this.html(this.html().replace(regex, function(a, b, c){
        return (a.charAt(0) == "<") ? a : "<strong class=\""+ hls_class +"\">" + c + "</strong>";
      }));
    }
  });
  jQuery(document).ready(function($){
    if(typeof(ie_query) != 'undefined'){
      $("#post-area").highlight(ie_query, 1, "ie");
    }
  });
  </script>

禁用WordPress搜索

如果您正在寻找一种禁用所有WordPress搜索功能的方法,则可以使用此代码。您所要做的就是将下面的代码复制并粘贴到functions.php文件中。

function fb_filter_query( $query, $error = true ) {
    if ( is_search() ) {
        $query->is_search = false;
        $query->query_vars[s] = false;
        $query->query[s] = false;
        // to error
        if ( $error == true )
            $query->is_404 = true;
    }
}
add_action( 'parse_query', 'fb_filter_query' );
add_filter( 'get_search_form', create_function( '$a', "return null;" ) );

 

1.使用本站下载的源码仅限于个人学习和非商业用途。
2.禁止将本站下载的源码用于搭建或支持任何违法、淫秽、暴力或侵犯他人合法权益的网站或应用。
3.使用本站下载的源码需遵守国家法律法规及相关规定,不得从事任何违法活动。
4.如若本站内容侵犯了原著者的合法权益,请联系我们进行处理。