How to Rewrite the URL

时间:2016-07-04 作者:Crock

这里我提到了url

http://localhost/wp/2016/?category_name=cricket
现在我需要重新排列url,如下所示

http://localhost/wp/cricket/2016.
这里板球是类别名称,2016年是年份。

删除?查询字符串变量不是wordpress URl中querystring的值。

我试过了

RewriteRule ^([0-9]{4})/?$/(.+)/([^/]+)/?$ /index.php/$1/?category_name=$2[QSA,L]
但不起作用

3 个回复
SO网友:NateWr

一旦您选择了永久链接格式,WordPress将在内部生成重写规则。您可以在WordPress管理区域的“设置”>“永久链接”下执行此操作。WordPress将尝试向您的.htaccess 文件如果不能,它将为您提供一些重写代码,您可以将其复制/粘贴到.htaccess 文件

无论哪种方式,WordPress都会将URL转换为查询参数。如果要更改WordPress解释URL和检索要显示的数据的方式,则需要研究Rewrite API.

SO网友:Suyash Jain

使用以下代码创建以下源url

http://localhost/cat/<catname>/<year> 
将转换为

http://localhost/index.php?year=<year>&category_name=<catname>
将代码粘贴到there函数中。php

add_action(\'init\', \'category_rewrite\');

function category_rewrite() {
        global $wp_rewrite;
        $rule = \'cat/(.+?)/(\\d+)/?$\';
        $rewrite = \'index.php?year=$matches[2]&category_name=$matches[1]\';
        add_rewrite_rule($rule,$rewrite,\'top\');
        $wp_rewrite->flush_rules();
}
所以我犯了个错误。

我没有刷新规则,重写应该用单引号,包括匹配项,整个事情应该以“non compiled“字符串,wordpress将编译它。

SO网友:Suyash Jain

对于基于阵列的,您可以使用类似的内容。

add_action(\'init\', \'category_rewrite\');

function category_rewrite() {

        global $wp_rewrite;
        $my_URL = $_SERVER[\'REDIRECT_URL\'];
        // in my example i am testing http://localhost/news-events/2015
        // Let save the second value 
        $my_URL_PATH=explode(\'/\',$my_URL);

        $my_CAT = Array (\'news-events\'=>\'cricket\');


        $rule = $my_URL_PATH[1].\'/(\\d+)/?$\';
        $rewrite = \'index.php?year=$matches[1]&category_name=\'.$my_CAT[$my_URL_PATH[1]];
        add_rewrite_rule($rule,$rewrite,\'top\');
        $wp_rewrite->flush_rules();
}

相关推荐