我仍然没有找到两次搜索结果不同的原因,但我决定使用permalink搜索选项,并根据自己的需要进行调整。
以下是帮助我筛选搜索结果的简化片段:
function define_search_permissions() {
global $wp_post_types;
$wp_post_types[\'page\']->exclude_from_search = true;
$wp_post_types[\'custom_post_type1\']->exclude_from_search = true;
}
add_action(\'init\', \'define_search_permissions\');
我宁愿把他们排除在外,而不是直接从
register_post_type
, 因为这些自定义帖子类型应该可以从受限成员区域进行搜索。
有点离题:这个问题有一个额外的复杂性,因为我正在创建一个双语博客,使用qtranslate,url预路径模式处于活动状态(即将链接转换为example.com/en/blog
等等)。通过使用htaccess重定向,我成功地使用附加的query var强制进行常规搜索,以重定向到pretty permalink版本。这可能不是最整洁的选择,但现在可以了。以下是执行此重定向的两行代码:
RewriteCond %{QUERY_STRING} ^s=(.*)$
RewriteRule ^(ro|en)/blog/$ /$1/search/%1? [R=301,L]
如果您不使用任何更改URL的多语言插件,代码将简化为:
RewriteCond %{QUERY_STRING} ^s=(.*)$
RewriteRule ^blog/$ /search/%1? [R=301,L]
最后一个
?
在
RewriteRule
声明故意放在那里。如果没有它,您的链接将
example.com/search/findme?s=findme
而不是
example.com/search/findme
.