Wordpress add_rewrite_rule有3个变量

时间:2012-10-03 20:50:43

标签: wordpress

我无法让Wordpress使用add_rewrite_rule()函数为变量分配正确的值。我的目标是建立一个如下所示的网址:www.mywebsite.com/catalog/category1/category2/item-slug

这是我在functions.php文件中的代码:

add_filter( 'query_vars', 'query_vars_new' );
function query_vars_new($query_vars){
    $query_vars[]='category1';
    $query_vars[]='category2';
    $query_vars[]='catalog_item';
    return $query_vars;
}

add_action( 'init', 'rewrite_init' );
function rewrite_init(){
    add_rewrite_rule('catalog(/([^/]+))?(/([^/]+))?/?','index.php?page_id=94&category1=$matches[1]&category2=$matches[2]&catalog_item=$matches[3]','top');
}

因此,我们的目标是让三个变量$category1$category2$catalog_item包含来自相应网址段的值。但是,当我测试这个时,前两个变量被设置为相同的值。

例如,www.mywebsite.com/catalog/clothes/shirts/polo-shirt 应返回

$category1="clothes";
$category2="shirts";
$catalog_item="polo-shirt";

但我得到了:

$category1="/clothes";
$category2="clothes";
$catalog_item="/polo-shirt";

我的add_rewrite_rule函数肯定有问题,但我无法理解。

1 个答案:

答案 0 :(得分:0)

由于对这个问题的回应令人难以置信,我最终只是在没有Wordpress变量帮助的情况下使其工作。我只是将Wordpress配置为允许url中的变量,然后使用PHP获取URL并获取不同的URL段并对其进行分析。不像Wordpress方法那么漂亮,但至少它可以工作。