让wordpress自带的搜索仅搜素标题内容

2013年03月21日 | 分享 | 11条评论

由于同学的毕业论文需要,让wp的搜索功能仅搜索标题,所以我就在网上找了很久的关于search的函数用法

额,各种搜索没结果呀,wp官方的中文英文函数大全都没有提到(或者我眼神不好),在快失去信心的时候,终于发现了

在这里分享下吧

找到wp-includes/query.php 将

$search .= "{$searchand}(($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}'))";  

替换成

$search .= "{$searchand}(($wpdb->posts.post_title LIKE '{$n}{$term}{$n}'))";  

再将

$search .= " OR ($wpdb->posts.post_title LIKE '{$n}{$term}{$n}') OR ($wpdb->posts.post_content LIKE '{$n}{$term}{$n}')";  

替换成

$search .= " OR ($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";  

貌似用替换了第一个文件就实现了... 测试版本 wordpress 3.5.1

一不小心把链接写成了https://huilang.me/search-titl/囧...少了个e 算了 无所谓了

 

发现了一种更实用的方法,即提高提高 WordPress 搜索的相关性,让wp自带的搜索排序根据标题然后到内容排列,而不是根据时间的先后,这样就可以更好的搜索出我们想要的结果(虽然我想要的就是仅搜索标题而已,但是又这种方法为何不用了)

方法:functions中添加

add_filter('posts_orderby_request', 'wpjam_search_orderby_filter');  
function wpjam_search_orderby_filter($orderby = ''){  
if(is_search()){  
global $wpdb;  
$keyword = $wpdb->prepare($_REQUEST['s'],'');  
return "((CASE WHEN {$wpdb->posts}.post_title LIKE '%{$keyword}%' THEN 2 ELSE 0 END) + (CASE WHEN {$wpdb->posts}.post_content LIKE '%{$keyword}%' THEN 1 ELSE 0 END)) DESC, {$wpdb->posts}.post_modified DESC, {$wpdb->posts}.ID ASC";  
}else{  
return $orderby;  
}  
}  

11 条评论

  1. 我在是使用点点博客,请问能不能在自定义html里加入一段代码实现禁止网页中flash视频打开外部链接?就是通常视频网站返回原视频网址观看的那个按钮点击后不返回原视频网站。

发布评论