언제 add_rewrite_tag ()를 사용해야합니까?


22

다시 작성 규칙을 가장 잘 추가하는 방법을 배우려고 며칠을 보냈습니다. 지금까지 이해 한 것은 간단한 규칙을 추가하는 적절한 방법이 사용 add_rewrite_rules()하는 것입니다. Jan Fabry 덕분 에이 교환에 대해 정통한 사람들이 많이 사용되었습니다.

그는 add_rewrite_tags()다시 작성 규칙을 추가하는 다른 방법이나 사용법에 대한 좋은 예와 달리 사용하는 것이 유익 할 때 설명하는 가이드를 보지 못했다고 언급했지만 더 강력한 도구 인 것 같지만, 내가 할 수있는 모든 것입니다. 나는 코덱스의 예제가 너무로 찾아 비밀 또는 불완전 . 누군가가 그것에 대해 자세히 설명하거나 자원을 가리킬 수 있습니까? Google에서 유용한 것이 없습니다.

편집 : 분과 페이지의 '일반적'에 대한 이야기와 함께 그것을 사용add_rewrite_rules()하지만, 정교하지 않습니다. 마찬가지로 Codex 페이지add_rewrite_rules()참조add_rewrite_tags()하지만 정보가 매우 희박합니다. 그러한 조합은 언제 어떻게 사용됩니까? 내가 찾은 유일한 예는 내가이해하지 못하는 Rob Vermeer의 대답 입니다.

답변:


21

근본적인 차이점은 다음과 같습니다.

  • 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()에 제안 코덱스 페이지 .
seron

당신은 분류법에 대해 옳습니다 (나의 예는 좋지 않습니다). 이 부분을 참조하십시오 register_taxonomy(). 더 좋은 예는 %country%country 와 같은 것을 사용하고 싶지만 country가 분류법이 아닌 일반적인 쿼리 변수 일 때입니다. 이런 경우는 드물다 – 나는 결코 사용하지 않았다 add_rewrite_tag().
Stephen Harris
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.