专注CJ联盟
不止CJ联盟

wordpress技巧:让wordpress只搜索文章标题

昨天写了篇WP技巧性的文章,关注的人不多,这也很正常。但也有人拿去测试了,并且留言反馈了,那我写的就有意义。

回答下@小菜 的提问

虾哥,这个方法我测试了下,可行。不过,大多数时候搜索结果是好几个,其中很大原因是WP自带的搜索功能除了搜索标题,也搜索正文。

小菜反馈的确实是个很现实的问题,比如你在我博客搜索CJ两个,那结果就会出来非常多个,这样子就无法直接打开结果。因为之前我们介绍的wordpress技巧是站内搜索单一结果时直接打开文章,而出现多个结果时,依然是列表式的搜索结果页面。

我当时使用这个时,其实也是遇到过这个问题的。因为我搜索的字段,既会出现在标题里,也会出现在文章中。但是我的文章标题都是同一格式,只有某个字段是变化的。每篇文章,这个字段都是独立的,也就是说没有文章会重复出现这个字段

所以,我就再加了一段代码,只搜索文章标题。当然,这也是我再网上找到的,添加到function.php里就可以了。

于是我的工具站点,就可以实现输入某个字段,从而直接出现文章结果了。

 

/**
* 让 WordPress 只搜索文章的标题
*/
function __search_by_title_only( $search, &$wp_query )
{
global $wpdb;

if ( empty( $search ) )
return $search; // skip processing – no search term in query

$q = $wp_query->query_vars;
$n = ! empty( $q[‘exact’] ) ? ” : ‘%’;

$search =
$searchand = ”;

foreach ( (array) $q[‘search_terms’] as $term ) {
$term = esc_sql( like_escape( $term ) );
$search .= “{$searchand}($wpdb->posts.post_title LIKE ‘{$n}{$term}{$n}’)”;
$searchand = ‘ AND ‘;
}

if ( ! empty( $search ) ) {
$search = ” AND ({$search}) “;
if ( ! is_user_logged_in() )
$search .= ” AND ($wpdb->posts.post_password = ”) “;
}

return $search;
}
add_filter( ‘posts_search’, ‘__search_by_title_only’, 500, 2 );

赞(2)
未经允许不得转载:赚刀博客 » wordpress技巧:让wordpress只搜索文章标题

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

赚刀博客——专注CJ联盟,不止CJ联盟

联系小龙虾CJ联盟交流群