在WordPress中仅搜索标题
WordPress是一个流行的开源内容管理系统,它允许用户创建和管理网站。在WordPress中,搜索功能可以帮助用户快速找到他们需要的内容。默认情况下,WordPress只搜索标题,这意味着只有文章的标题会被搜索到。如果您想要搜索整个文章内容,您需要在搜索框中输入关键词并按下回车键。此外,您还可以使用高级搜索功能来自定义您的搜索结果。例如,您可以选择搜索特定类别、标签或作者的文章。总之,WordPress提供了多种搜索选项,以满足不同用户的需求。
WordPress默认的搜索功能会将文章中出现的词也一起匹配,这样虽然搜索很全面,但是却会得到很多不正确的结果,增加获得信息的难度。如果不想匹配文章内容中出现的关键词,我们可以通过posts_search过滤器,将搜索结果替换成我们自己的搜索逻辑即可。以下代码剥离至DUX,使用DMD主题的朋友可以按照下面的教程直接复制使用,或者等我更新主题。
操作步骤
下面的教程与我更新主题后的操作是一样的,所以有新增配置项的操作,如果你不需要,可以直接进入最后一步。
新增配置项
在主题设置配置文件options.php中添加如下配置项,位置随便你,建议添加到基本选项卡中。
$options[]=array('name'=>__('搜索时关键字只匹配标题','haoui'),'id'=>'search_title','type'=>"checkbox",'std'=>true,'desc'=>__('开启','haoui'));
替换搜索逻辑
以下代码放在functions.php中,或者被functions.php引用的文件中。
functionhui_search_by_title_only($search){global$wpdb,$wp_query;if(empty($search))return$search;$q=$wp_query->query_vars;$n=!empty($q['exact'])?'':'%';$search=$searchand='';foreach((array)$q['search_terms']as$term){$term=esc_sql($wpdb->esc_like($term));$search.="{$searchand}($wpdb->posts.post_titleLIKE'{$n}{$term}{$n}')";$searchand='AND';}if(!empty($search)){$search="AND({$search})";if(!is_user_logged_in())$search.="AND($wpdb->posts.post_password='')";}return$search;}
使用主题配置项控制,请在上面代码结束后添加如下代码
if(_hui('search_title')){add_filter('posts_search','hui_search_by_title_only',500,2);}
如果你不想要后台选项,可以将上面代码替换掉。
add_filter('posts_search','hui_search_by_title_only',500,2);