2013-02-08 4 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/Test3워드 프레스 재 작성 문제

나는 위해서 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'); 
} 

달러 기호는 문자열의 끝을 표시합니다.