영구 링크 : 맞춤 게시물 유형-> 맞춤 분류 체계-> 게시물


38

WordPress 다시 쓰기 규칙을 사용하는 데 문제가 있으며 도움이 필요합니다.

이라는 맞춤 게시물 유형이 _shows_있습니다.

모든 는 하나의 맞춤 분류 체계 카테고리 _show-category_.A _show_를 가지지 않으며, 하나 이상의 분류를 가질 수 없습니다 _show-category_.

내 URL을 다음과 같은 방식으로 라우팅하고 싶습니다.

www.mysite.com/shows/  =>  archive-shows.php

www.mysite.com/shows/%category%/ => taxonomy-show-category.php

www.mysite.com/shows/%category%/%postname%/ => single-shows.php

실제 예를 들어 _show-category_"Foo"와 "Foo" 가있는 _show_"Bar"라는 제목 의 게시물 이 있다고 가정하겠습니다 _show-category_. 내 WordPress 앱이 다음과 같이 보일 것으로 예상합니다.

www.mysite.com/shows/foo/ => shows all posts under the foo category
www.mysite.com/shows/foo/bar => shows the indivual post

가능한 경우 플러그인을 피하려고 시도하지만 모든 솔루션에 개방적입니다.


1
뭔가 당신을 가리키는 내가 전에해야 할 일을했을 .. wordpress.stackexchange.com/questions/102246/...
reikyoushin

답변:


70

먼저 분류를 등록 하고의 slug인수 rewriteshows다음으로 설정하십시오 .

register_taxonomy(
    'show_category',
    'show',
    array(
        'rewrite' => array( 'slug' => 'shows', 'with_front' => false ),
        // your other args...
    )
);

다음으로 게시물 유형을 등록 하고 슬러그를 shows/%show_category%로 설정하고 has_archive인수를 shows다음으로 설정하십시오 .

register_post_type(
    'show',
    array(
        'rewrite' => array( 'slug' => 'shows/%show_category%', 'with_front' => false ),
        'has_archive' => 'shows',
        // your other args...
    )
);

마지막 post_type_link으로 개별 쇼 퍼머 링크에서 쇼 카테고리를 대체 할 필터를 추가하십시오 .

function wpa_show_permalinks( $post_link, $post ){
    if ( is_object( $post ) && $post->post_type == 'show' ){
        $terms = wp_get_object_terms( $post->ID, 'show_category' );
        if( $terms ){
            return str_replace( '%show_category%' , $terms[0]->slug , $post_link );
        }
    }
    return $post_link;
}
add_filter( 'post_type_link', 'wpa_show_permalinks', 1, 2 );

편집하다

위 의 has_archive인수를 잊어 버렸습니다 . register_post_type로 설정해야합니다 shows.


1
마일로, 감사합니다! post_type_link 필터는 저에게 없어진 부분이었습니다. 동일한 문제 로이 스레드를 읽는 사람은 wpa_show_permalinks 함수에 $ post-> post_type == 'show'가 실제로 'shows'여야한다는 작은 실수가 있습니다. 다시 한번 감사합니다 Milo!
Paul T

1
@milo, wordpress.stackexchange.com/questions/199456/… 에서 온 404이 접근 방식을 계속 사용합니다. 내 영구 링크 구조는%category%/%postname%
Atticus

4
기존 WordPress 인스턴스를 변경하는 경우 설정> 영구 링크로 이동하고 저장을 클릭하십시오. functions.php에서 변경 한 내용은 적용 할 때까지 적용되지 않습니다.
Jay Neely

2
이것은 분류 유형이 게시물 유형 페이지에 표시되고 / post_type / taxonomy /는 합법적 인 페이지 (이전 404)이지만 내 / post_type / taxonomy / post는 404입니다. show_category 만 분류 체계 인 경우에도 "show_category", "show"가 모두 분류 체계를 등록 할 때주의를 기울였습니다. 분류 체계 만 등록하고 있습니다.
justinavery

4
@Milo show / tax / subtax / post와 같은 sub sub tax로 작동하게하는 방법은 무엇입니까?
Benn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.