0
function add_new_rewrite_rules()
{
    add_rewrite_rule('^gourmet/area/([^/]*)/genre/([^/]*)/?','index.php?post_type=gourmet&gourmet_area=$matches[1]&gourmet_genre=$matches[2]','top');
    add_rewrite_rule('^gourmet/area/([^/]*)/genre/([^/]*)/type/([^/]*)/?','index.php?post_type=gourmet&gourmet_area=$matches[1]&gourmet_genre=$matches[2]&food_type=$matches[3]','top');
}

所以我有这样的东西,但是当我去:http ://www.site.com/gourmet/area/Test1/genre/Test2/type/Test3

我有一个 var_dump($wp_query->query_vars['gourmet_area'];),由于某种原因它没有传递最后一个变量。

它发布:Test1 和 Test2,但不是 Test3。如果我删除第一条规则,它将转储 Test3。

如果只有这些可用,我如何让它包含 Test1、Test2?

4

1 回答 1

0

在正则表达式的末尾添加一些美元符号。只有当路径以斜杠或任何非斜杠字符结尾时,正则表达式才有效。

function add_new_rewrite_rules()
{
    add_rewrite_rule('^gourmet/area/([^/]*)/genre/([^/]*)/?$','index.php?post_type=gourmet&gourmet_area=$matches[1]&gourmet_genre=$matches[2]','top');
    add_rewrite_rule('^gourmet/area/([^/]*)/genre/([^/]*)/type/([^/]*)/?$','index.php?post_type=gourmet&gourmet_area=$matches[1]&gourmet_genre=$matches[2]&food_type=$matches[3]','top');
}

美元符号标志着字符串的结束。

于 2013-02-08T21:05:11.737 回答