让wordpress自带的搜索仅搜素标题内容
由于同学的毕业论文需要,让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;
- }
- }
自定义的参数你没有去详细看
@小雨: 我没看到有呀…
没啥必要吧,内容有时也是和搜索关键词有关联的
@★Extreme★: 目的就是只搜索标题而已 搜索内容就是另一回事了 根据不同需要吧 一般都是搜内容+标题的
‘%{$keyword}%’
像这种写法好像会导致SQL注入的吧!!!!
‘=’%’–
@DigData: 这个没研究过 怎么注入呀。。。
我在是使用点点博客,请问能不能在自定义html里加入一段代码实现禁止网页中flash视频打开外部链接?就是通常视频网站返回原视频网址观看的那个按钮点击后不返回原视频网站。
@问问: 这个貌似不行 只能在flash端控制吧
现在是真的木有留言板了么?我感觉我那个wordpress运行速度相当慢,不能忍了 :cry: ,看来红帽不给力
@iShare: 什么情况?红帽?
我喜欢写在functions文件里,一段代码直接搞定!改来改去太坑爹了!