맞춤 게시물 유형 슬러그 / 페이지 슬러 충돌-페이지 저장시 예약 된 슬러그 사용을 방지 하시겠습니까?


13

내 테마에 사용자 정의 게시물 유형의 포트폴리오 (슬러그 포트폴리오)가 있으며 한 가지를 제외하고는 모두 잘 작동합니다. 예를 들어 example.com/portfolio와 같은 포트폴리오를 가진 사람들이 페이지를 만들 때, 테마는 내가 편집자에서 만든 내 페이지가 아닌 사용자 지정 게시물 형식 보관 페이지를 사용하고 싶다고 생각합니다.

페이지가 저장되지 않았을 때 슬러그 포트폴리오를 어떻게 "예약"하여 사용하지 않을 수 있습니까? 아마도 포트폴리오 페이지로 이름을 바꿀 수 있습니까?

내 프로젝트는이 튜토리얼에 설명 된 방법을 사용합니다. 다음은 내가 참조하는 충돌입니다.

"코드를 패치해야하는 것 외에도 페이지 슬러그를 커스텀 포스트 타입 슬러그와 같은 것으로 호출 할 수 없다는 점에서 또 다른 문제점이 있습니다. 커스텀 포스트 타입 슬러그를 예약 키워드로 생각하십시오. 페이지 슬러그가 다른 경우 페이지 제목은 맞춤 게시물 유형 슬러그와 동일한 이름입니다. " -http: //wp.tutsplus.com/tutorials/custom-post-type-pagination-chaining-method/

조언을 주셔서 감사합니다!


내가 볼 수있는 한 가지 옵션은 register_post_type () init : 'rewrite'=> array ( 'slug'=> 'portfolio', 'with_front'=> true)에서 이것을 제거하고 'rewrite'=> false 및 추악한 "단일"포트폴리오 아이템과 함께 살아라.
hhins

답을 알고 싶을 때 질문에 투표하십시오! 나는 두 번 커스텀 게시물로 작업했지만이 사실을 결코 알지 못했지만 이제는 질문을 읽은 후에 시도했습니다. 당신 말이 맞아요, 워드 프레스는 여기에서 혼란스러워합니다!
Rutwick Gangurde

답변:


13

다음 2 개의 필터를 사용하면 WordPress가 슬러그를 검사 할 때 연결할 수 있으며 wp-includes / post.php 파일의 wp_unique_post_slug () 함수에 있습니다.

계층 적 게시물 용 필터와 비 계층 적 필터 용 필터가 있습니다. 계층 적 필터는 게시물 상위의 ID를 제공하므로 $ post_parent가 0이면 이것이 "기본"게시물이라는 것을 알 수 있습니다.

특정 게시물 유형을 로직에 추가하려는 경우 필터는 $ post_type도 전달합니다.

"true"를 반환하면 WordPress에이 슬러그가 잘못되었으므로 WordPress가 이미 가져온 게시물 이름 / 슬러그를 시도 할 때와 마찬가지로 접미사를 추가한다는 것을 알 수 있습니다.

add_filter( 'wp_unique_post_slug_is_bad_hierarchical_slug', 'portfolio_is_bad_hierarchical_slug', 10, 4 );
function portfolio_is_bad_hierarchical_slug( $is_bad_hierarchical_slug, $slug, $post_type, $post_parent ) {
    if ( !$post_parent && $slug == 'portfolio' )
        return true;
    return $is_bad_hierarchical_slug;
}

add_filter( 'wp_unique_post_slug_is_bad_flat_slug', 'portfolio_is_bad_flat_slug', 10, 3 );
function portfolio_is_bad_flat_slug( $is_bad_flat_slug, $slug, $post_type ) {
    if ( $slug == 'portfolio' )
        return true;
    return $is_bad_flat_slug;
}

어떤 이유로 나는 여전히 같은 문제에 직면하고 있습니다
Tan-007

1

'portfolio'슬러그가있는 페이지를 만들고 'Private'로 만듭니다. 추가 사용으로부터 슬러그를 예약 할 때 공개적으로 숨겨집니다.


1

페이지 매김 문제를 조사 할 때이 문제를 정확히 발견했습니다. 뉴스 홈페이지 (슬러그 "뉴스")가 있고 페이지 매김에 실패했습니다. / news / page / 2 /에 도달하려고 시도하면 항상 '404-찾을 수 없음'이 발생했습니다.

문제는 뉴스 사용자 정의 유형에도 슬러그 "뉴스"가 제공되었다는 것이 밝혀졌습니다. 후자를 변경함으로써 (예를 들어 "news_archive"로) 문제가 해결되었습니다. 원래 뉴스 URL 참조는 변경되지 않았습니다. 뉴스 홈페이지 슬러그 변경도 효과가 있었지만 모든 URL에는 변경된 슬러그가 통합되었습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.