更改wordpress

时间:2017-05-29 07:45:18

标签: php wordpress

我尝试使用此代码段编辑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。

您对我如何实现这一目标有什么想法吗?

谢谢

3 个答案:

答案 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' );

在本地网站上测试过。更改单词"找到"在主题函数中添加此代码后,您可以根据自己的需要,不要忘记保存固定链接