我无法让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函数肯定有问题,但我无法理解。
答案 0 :(得分:0)
由于对这个问题的回应令人难以置信,我最终只是在没有Wordpress变量帮助的情况下使其工作。我只是将Wordpress配置为允许url中的变量,然后使用PHP获取URL并获取不同的URL段并对其进行分析。不像Wordpress方法那么漂亮,但至少它可以工作。