广告资源W1

纯代码实现WordPress后台和前台搜索只搜索文章标题

WordPress系统自带的搜索功能缺点:

不管是在前台搜索文章关键词,还是后台搜索文章关键词,搜索结果都会匹配到文章正文里面的搜索关键词。

  1. 这样就会导用户致搜索显示结果不精准,搜索内容不相关的内容太多,用户体验不好。
  2. 搜索展示结果过于太多,也会影响结果加载速度。
  3. 也有可能被不法分子,使用频繁搜索给服服务造成巨大压力,到达搜索攻击效果。

因为搜索是很耗费服务器资源的一件事,所以大家经常可以看到,某些站都会设置搜索时间间隔限制。

代码实现搜索只匹配文章标题的方法:

将下面的代码加入到主题下面functions.php文件中,注意是加在<?php后面,注意规范。

//WordPress搜索只匹配标题
// 原文地址https://www.yizhanzzw.com/11012.html
add_filter( 'posts_search', 'ytkah_search_by_title', 10, 2 );
function ytkah_search_by_title( $search, $wp_query ) {
    if ( ! empty( $search ) && ! empty( $wp_query->query_vars['search_terms'] ) ) {
        global $wpdb;
        $q = $wp_query->query_vars;
        $n = ! empty( $q['exact'] ) ? '' : '%';
        $search = array();
        foreach ( ( array ) $q['search_terms'] as $term )
            $search[] = $wpdb->prepare( "$wpdb->posts.post_title LIKE %s", $n . $wpdb->esc_like( $term ) . $n );
        if ( ! is_user_logged_in() )
            $search[] = "$wpdb->posts.post_password = ''";
        $search = ' AND ' . implode( ' AND ', $search );
    }
    return $search;
}

add_filter( 'posts_search', 'ytkah_search_by_title', 10, 2 );
function ytkah_search_by_title( $search, $wp_query ) {
    if ( ! empty( $search ) && ! empty( $wp_query->query_vars['search_terms'] ) ) {
        global $wpdb;
        $q = $wp_query->query_vars;
        $n = ! empty( $q['exact'] ) ? '' : '%';
        $search = array();
        foreach ( ( array ) $q['search_terms'] as $term )
            $search[] = $wpdb->prepare( "$wpdb->posts.post_title LIKE %s", $n . $wpdb->esc_like( $term ) . $n );
        if ( ! is_user_logged_in() )
            $search[] = "$wpdb->posts.post_password = ''";
        $search = ' AND ' . implode( ' AND ', $search );
    }
    return $search;
}

测试搜索结果展示(如图)

图片[1]-纯代码实现WordPress后台和前台搜索只搜索文章标题-易站站长网

THE END
喜欢就点个赞再走呗~
点赞5赞赏 分享
说点什么 抢沙发
头像
说点正能量的内容吧
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容