2013-02-08 38 views
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/Test3WordPress的重寫問題

我有一個的var_dump($ wp_query-> query_vars [ 'gourmet_area']),以及由於某種原因,它是沒有傳遞最後一個變量。

它的帖子:Test1和Test2但不是Test3。如果我刪除第一條規則,它將轉儲Test3。

如何才能讓它包含Test1,Test2(如果只有這些可用)?

回答

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'); 
} 

美元符號標誌着字符串的結尾。