근본적인 차이점은 다음과 같습니다.
- 는
add_rewrite_rule()
추가 특정 규칙 해석
- 는
add_rewrite_tag()
추가 자리 URL 구조에서 사용할 수 있습니다. 그런 다음이 자리 표시자는 여러 규칙을 생성하는 데 사용됩니다.
예를 들어, 여러 국가의 여행사 광고 호텔이라고 가정합니다. 호텔의 URL을 좋아할 수도 있습니다.
www.example.com/hotels/UK/Balmoral
국가 (이 예에서는 영국)가 사용자 정의 분류 용어이고 Balmoral이 호텔 (포스트 유형) 인 경우. 이를 위해 다시 쓰기 규칙을 추가 할 수 있지만 다음에 대한 규칙을 생성해야합니다.
- 호텔 자체
- 호텔의 첨부 파일
- 여러 페이지에 쏟아지는 호텔 (게시물)에 대한 규칙
이러한 규칙을 생성하는 것은 복잡해질 수 있습니다. 또한 게시물 유형을 등록 할 때 설정 한 영구 구조 에서 생성 된 해당 게시물 유형에 대한 WordPress의 자체 규칙과 경쟁 할 수 있습니다 . (어쨌든 워드 프레스가 작동하게하십시오).
Permalink 설정에서 게시물에 설정 한 것과 유사한이 'permastructure'는 WordPress가 생성하는 다시 쓰기 규칙을 결정합니다. 그러나 우리는 해석하기를 원하는 미지의 (국가) 를 포함하는 구조를 원하기 때문에 형식의 자리 표시자를 제공해야합니다 %country%
. ( %category%
게시물 과 거의 동일합니다 ).
예를 들면 다음과 같습니다.
add_action_init('init','wpse71305_register_types');
function wpse71305_register_types(){
//You'll need to register the country taxonomy here too.
//Add 'country' tag.
add_rewrite_tag('%country%', '([^&/]+)'));
//Register hotel post type with %country$ tag
$args = array(
...
'has_archive'=>true,
'rewrite' => array(
'slug'=>'hotels/%country%',
'with_front'=> false,
'feed'=> true,
'pages'=> true
)
...
);
register_post_type('hotel',$args);
}
참고 : WordPress는 %country%
태그 에서 URL을 생성하는 방법을 알지 못 하므로이를 수행해야합니다. (아래 링크 된 기사에서이 내용을 다룹니다).
마지막으로 WordPress는 일치하는 값을 저장하므로 get_query_var()
표준 표준 재 작성 규칙이없는 것을 통해 검색 할 수 있습니다 .
게시물의 영구 구조에 사용할 태그를 생성 할 수도 있습니다 (퍼머 링크 설정 페이지에서 설정).
태그를 추가하면 영구 구조에서 태그를 사용할 수 있습니다. 그러면 워드 프레스가 알게됩니다
- 뭘 기대 할까
- URL을 해석하는 방법 (일치 확인)
- 값을 해석하는 방법 (예 : 'UK')
(참조 로이 기사를 참조하십시오 : http://wp.tutsplus.com/tutorials/creative-coding/the-rewrite-api-the-basics/ ).
편집하다
주석에서 언급했듯이 위의 예는 register_taxonomy()
실제로 호출 하는 것만 큼 좋지 add_rewrite_tag()
않습니다.
Codex 문서를 '조합하여'사용하는 방법에 대해서는 독립적으로 사용할 수 있기 때문에 오해의 소지가 있습니다. 그러나 위에서 언급 한 것처럼 add_rewrite_tag()
태그 이름을 워드 프레스 이해 '쿼리 변수'에 추가합니다. 실제로 이것은를 사용하여 값을 검색 할 수있게합니다 get_query_var()
. 따라서 add_rewrite_rule()
와 함께 사용될 때 add_rewrite_tag()
변수는 WordPress에 의해 저장됩니다. 그러나 이것을 수행하는 다른 방법이 있습니다 ( 이 답변 참조 -Rob Vermeer의 의견 참고).
또한 관련 : 다시 작성된 URL에서 $ _GET 변수를 검색하는 방법은 무엇입니까?
add_rewrite_tag()
자리 표시자를 사용할 수 있다는 것입니다Settings->Permalinks
. 분류법 사용에 대한 사용 요구 사항add_rewrite_tag()
입니까? Codex 페이지 에서 내 인상은 그렇지는 않지만 일반적으로 사용되는 것 같습니다. 내가 사용에 관한 내 질문에 확장add_rewrite_tag()
과 함께add_rewrite_rule()
에 제안 코덱스 페이지 .