2016-09-01 2 views
2

수 있도록 나는 워드 프레스에 '모든 제품'라는 페이지를 가지고 있고, 나는 때, 그리고 domain.com/all-products/4382zcxs2133워드 프레스 Rewrite_Rule는 '/ 페이지/값'

function add_my_var($public_query_vars) { 
    $public_query_vars[] = 'routeparam'; 
    return $public_query_vars; 
} 

add_filter('query_vars', 'add_my_var'); 

function do_rewrite() { 
    add_rewrite_rule('all-products/[a-zA-Z0-9]/?$', 'index.php?pagename=all-products&routeparam=$matches[1]','top'); 
} 

add_action('init', 'do_rewrite'); 

로 URL의 ID를 사용하여 제품을 얻으려면 $wp_query->query_vars['routeparam']을 사용해 보았는데 'undefined index'라고 말합니다.

내가 var_dump($wp_query->query_vars) 일 때 실제로 페이지라고하는 색인의 값을 볼 수 있지만 숫자에만 적용됩니다. 대신 문자와 숫자를 사용하면 404 오류가 발생합니다.


편집 :

/all-products/213213은 -

/all-products/21321dsa3fsa 작동 - -

/all-products/ 작동 내가 바이올린에 정규식을 시도

작동하지 않습니다, 그것은 작동하지만,에 Wordpress는 add_rewrite_rule에 있지만 작동하지 않습니다. Here is the fiddle


편집 2 : 내 쓰기 규칙 라인을 주석 한, 그것은 여전히 ​​어떻게 든 product/123에 액세스 할 수 있습니다처럼 내 재 작성 규칙이 등록되지 보인다

.

나는 var_dump($wp_rewrite)을 시도했는데 재 작성 규칙이 등록되어 있다는 것을 확인할 수 있었지만 기본 wordpress pagination ('pagination_base'가 정확하게)이 원인이 될 수 있다고 생각합니다.

쓰기 규칙을 추가하고 URL을 /all-products/123으로 방문하면 404없이 페이지에 액세스 할 수 있으므로 제공된 '123'값은 $wp_query->query_vars에 '페이지'로 표시됩니다.

+1

당신은'all-products'라고 말합니다. 그러나 테스트에서'/ products /'를 사용합니다 - 규칙을 올바르게 테스트하고 있습니까? 모든 제품 (? :/([a-zA-Z0-9] +))? /? $ ''또는' '제품 (? :/([a-zA-Z0-9] +))? /? $ '', 아마도''^ products (? :/([a-zA-Z0-9] +))? /? 괄호에 유의하십시오. 그리고 참고 : [* 규칙을 수정 한 후 다시 쓰기 규칙 데이터베이스를 플러시하고 다시 생성해야합니다. WordPress 관리 화면에서 설정 -> 영구 링크를 선택하고 변경하지 않고 변경 사항 저장을 클릭하십시오. *] (https://codex.wordpress.org/Rewrite_API/add_rewrite_rule) –

+0

@ WiktorStribiżew 죄송합니다. 질문에 'typo'라고 적었습니다 '='모든 제품 '. permalinks를 설정에서 다시 저장해야한다는 것을 알지 못했습니다. ** 수정 : ** Omg, 그게 다야 !! 큰 감사 남자! – senty

+0

그래서''(? :/([a-zA-Z0-9] +))? /? $ ''제품이 작동 했습니까? –

답변

1

이 부분은 처음에 항상있는 경우

'products(?:/([a-zA-Z0-9]+))?/?$' 

또는

^를 추가 할 수 있습니다 : 1 군 형성하는 [a-zA-Z0-9]+ 주위 +(...) 괄호를

'^products(?:/([a-zA-Z0-9]+))?/?$' 

주 그 값은 것이다 $matches[1]을 통해 사용하십시오.

Do not forget to flush and regenerate the rewrite rules database after modifying rules. From WordPress Administration Screens, Select Settings -> Permalinks and just click Save Changes without any changes..