맞춤 URL 경로를 만드는 방법은 무엇입니까?


50

나는 매우 독특한 요구 사항을 가지고 있기를 바랍니다. 나는 너무 혼란스럽지 않고 설명 할 수 있기를 바랍니다. 외부 XML 파일에서 가져온 일부 속성을 나열하는 페이지 템플릿을 만들었지 만 지금까지 아무런 문제가 없습니다 .URL이 다음과 같다고 가정 해 봅시다.

http://www.example.com/properties/

각 속성에는 사용자에 대한 자세한 정보를 표시하는 "단일 속성"페이지로 사용자를 리디렉션해야하는 링크가 있습니다. 다음과 같이 링크를 만드는 방법이 있는지 궁금합니다.

http://www.example.com/properties/123

123부동산의 ID는 어디에 있습니까 ? 따라서 URL이 비슷한 경우이 URL 조건에 properties/some_id따라보기 파일 ( single.php또는 page.php파일 등) 을로드 할 수 있기를 원합니다 .

이게 가능해?

답변:


57

이것을 테마의 functions.php에 추가하거나 플러그인에 넣으십시오 .

add_action( 'init', 'wpse26388_rewrites_init' );
function wpse26388_rewrites_init(){
    add_rewrite_rule(
        'properties/([0-9]+)/?$',
        'index.php?pagename=properties&property_id=$matches[1]',
        'top' );
}

add_filter( 'query_vars', 'wpse26388_query_vars' );
function wpse26388_query_vars( $query_vars ){
    $query_vars[] = 'property_id';
    return $query_vars;
}

그러면 쿼리 var 세트를 사용하여 /properties/pagename 뒤에 숫자 조합 을 사용 하여 요청을 지시하는 다시 쓰기 규칙이 추가 됩니다. 영구 링크 설정 페이지를 방문하여 플러시 다시 쓰기 규칙에 저장하면이 새 규칙이 포함됩니다.propertiesproperty_id

당신의에서 page-properties.php서식 get_query_var('property_id')이 설정된 경우 그 다음 기본 속성 페이지를 표시되어 있지 않은 경우, 속성 ID를 반환합니다.


4
이것은 나를 위해 일하기에 가깝지만 추가해야했습니다 : add_filter ( 'init', 'flushRules'); 기능 flushRules () {전역 $ wp_rewrite; $ wp_rewrite-> flush_rules (); }
tooshel

19
@tooshel 당신은 확실히 모든 요청에서 규칙을 플러시하고 싶지 않습니다, 그것은 비싼 작업이며 사이트를 크롤링하는 속도를 늦출 것입니다. 플러그인 활성화 또는 퍼머 링크 설정 페이지를 방문하여 규칙을 한 번만 플러시하면됩니다.
Milo

그래, 알았어 . . 그러나 테스트 할 때 거기에 있다는 것이 좋습니다!
tooshel

3
똑똑한 재 작성 URL 정규 표현식은 다음과 같습니다 ^properties/([0-9]+)/?. 그렇지 않으면 그것은 다음과 같은 것입니다example/properties/1
Ryan Taylor

@RyanTaylor 확실합니까? example/properties/1테스트 할 때 캡처하지 않습니다 .
Milo

9

그것을하는 또 다른 방법 :

add_action('init', function() {
    add_rewrite_rule( '^properties/([0-9]+)/?',
                      'index.php?pagename=properties&property_id=$matches[1]',
                      'top' );
}, 10, 0);

add_action('init', function() {
    add_rewrite_tag( '%property_id%', '([^&]+)' );
}, 10, 0);

코덱 재 작성 API / 재 작성 규칙 추가

코덱 재 작성 API / 재 작성 태그 추가


2
수락 된 답변은 4.7 (및 4.8)에서 작동하지만 왜 그렇게 생각하지 않는지 잘 모르겠습니다. 코드는 본질적으로 동일한 작업을 수행하며 add_rewrite_tag, 쿼리 var를 query_vars필터 와 동일한 배열에 추가합니다 .
Milo

@Milo 아마도 나를 위해 작동하지 않았지만 더 이상 4.7 핸디가 없으므로 확인할 수 없습니다. 답변을 편집하겠습니다.
Christian Lescuyer

@Milo 개인적으로 다시 쓰기 태그를 선호하지만 여전히 허용되는 답변을 테스트했지만 작동합니다. 그러나 약간의 개인적인 취향.
잭 요한슨

1
@JackJohansson 다시 쓰기 태그는 permastruct에서 사용할 때 필요합니다 . 이 경우 WordPress에서 절대 사용하지 않는 여분의 데이터입니다.
Milo

모두 규칙은 유지 보수 작업을 수행하는 경우 알아낼 되돌아 올 수있는 깨끗하고 유용한 기능에서 끝나는, 같은 방법으로 추가 할 수 있습니다
eballeste
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.