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 に答える