Wordpress添加\重写\规则,包含3个变量

Wordpress添加\重写\规则,包含3个变量,wordpress,Wordpress,我在让Wordpress使用add_rewrite_rule()函数为变量指定正确的值时遇到了问题。我的目标是创建一个如下所示的url: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[

我在让Wordpress使用add_rewrite_rule()函数为变量指定正确的值时遇到了问题。我的目标是创建一个如下所示的url:
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\u item
具有相应url段的值。然而,当我测试这个时,前两个变量被设置为相同的值

例如,
www.mywebsite.com/catalog/costs/shirts/polo shirt
应返回:

但我得到的却是:

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

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

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

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