我尝试使用此代码段编辑WordPress中的搜索slug:
function fb_change_search_url_rewrite() {
if ( is_search() && ! empty( $_GET['s'] ) ) {
wp_redirect( home_url( "/search/" ) . urlencode( get_query_var( 's' ) ) );
exit();
}
}
add_action( 'template_redirect', 'fb_change_search_url_rewrite' );
它很棒。但我需要将slug“/ search /”更改为自定义,除了这个单词之外没什么可行的。每当我和其他人一起改变时,我得到404。
您对我如何实现这一目标有什么想法吗?
谢谢
答案 0 :(得分:0)
以下是我在function.php上写的内容:
function search_url_rewrite () {
if (is_search() && !empty($_GET['s'])) {
wp_redirect(home_url('/anything/').urlencode(get_query_var('s')));
exit();
}
}
ADD_ACTION(' template_redirect'' search_url_rewrite&#39);
试试这段代码..
答案 1 :(得分:0)
我们在php和.htaccess formate中编写脚本。请试试他们..
php脚本
function fb_set_search_base() {
$GLOBALS['wp_rewrite'] -> search_base = 'my_search'; // set new string
}
add_action( 'init', 'fb_set_search_base' );
htaccess脚本
RewriteCond %{QUERY_STRING} s=(.*)
RewriteRule ^$ /search/%1? [R,L]
了解更多信息.. see here
答案 2 :(得分:0)
您需要为自定义搜索slug / permalink
制定重写规则修改你的代码就像这样
function fb_change_search_url_rewrite() {
if ( is_search() && ! empty( $_GET['s'] ) ) {
wp_redirect( home_url( "/find/" ) . urlencode( get_query_var( 's' ) ) );
exit();
}
}
add_action( 'template_redirect', 'fb_change_search_url_rewrite' );
//additional rewrite rule + pagination tested
function rewrite_search_slug() {
add_rewrite_rule(
'find(/([^/]+))?(/([^/]+))?(/([^/]+))?/?',
'index.php?s=$matches[2]&paged=$matches[6]',
'top'
);
}
add_action( 'init', 'rewrite_search_slug' );
在本地网站上测试过。更改单词"找到"在主题函数中添加此代码后,您可以根据自己的需要,不要忘记保存固定链接。