이미 등록 된 분류법을 수정하는 방법


18

오늘 나는 이미 타사 플러그인에 의해 등록 된 사용자 정의 분류법에 대한 인수를 변경해야했습니다 . 특히 나는 분류법 슬러그가 아닌 슬러그로 show_admin_column인수 를 설정 true하고 변경하고 싶었습니다 rewrite. 이 경우 "People Category"사용자 지정 분류 체계가있는 "People"게시물 유형입니다.

나는 이것이 이전에 요청되지 않은 것에 놀랐습니다. 여기에 질문과 대답이 있습니다.


막힌 사람을위한 참고 사항입니다. 결과를 확인하기 전에 영구 링크를 플러시해야합니다.
un.pez.vivo

답변:


22

register_taxonomy()작업을위한 도구입니다. 코덱스에서 :

이 함수는 분류법을 추가하거나 덮어 씁니다.

한 가지 옵션은를 복사 register_taxonomy() $args하고 수정하는 것입니다. 그러나 이는 원래 register_taxonomy()코드에 대한 향후 변경 사항을 덮어 씁니다.

따라서 적어도이 경우 원래 인수를 가져 와서 변경하려는 인수를 수정 한 다음 분류 체계를 다시 등록하는 것이 좋습니다. 이 솔루션에 대한 영감 은 사용자 정의 게시물 유형에 대한 비슷한 질문에 대한 답변 에서 @Otto에게 전달됩니다 .

예제에서 people사용자 정의 게시물 유형과 people_category분류를 사용하면 다음 과 같이됩니다.

function wpse_modify_taxonomy() {
    // get the arguments of the already-registered taxonomy
    $people_category_args = get_taxonomy( 'people_category' ); // returns an object

    // make changes to the args
    // in this example there are three changes
    // again, note that it's an object
    $people_category_args->show_admin_column = true;
    $people_category_args->rewrite['slug'] = 'people';
    $people_category_args->rewrite['with_front'] = false;

    // re-register the taxonomy
    register_taxonomy( 'people_category', 'people', (array) $people_category_args );
}
// hook it up to 11 so that it overrides the original register_taxonomy function
add_action( 'init', 'wpse_modify_taxonomy', 11 );

위의 세 번째 register_taxonomy()인수를 예상 배열 유형으로 유형 변환합니다 . 이 같은 꼭 필요한 것은 register_taxonomy()사용 wp_parse_args()처리 할 수 있습니다 object또는 array. 말했다, register_taxonomy()의는 $argsint로서 제출 해야하는 array이 바로 내 느낌, 그래서 분과에 따라.


플랫 분류법을 계층 분류법으로 변경하기 위해이 작업을 수행하려고합니다. 단순히 계층 적 속성을 true로 변경하고 있습니다. 이렇게하면 게시물 편집 화면 오른쪽에 분류 체계에 대한 두 개의 메타 상자가
생겨

'people_category'덮어 쓰기 위해 원래 분류법과 동일한 슬러그 (예 :)를 사용해야 합니다.
mrwweb

1
천재! 순수한 천재! 완벽하게 일했습니다!
DaveyJake

1
이 솔루션에 문제가 있음을 발견했습니다. capabilities매개 변수가 내부에 저장되어 cap등록 된 새 분류 체계로 전달되지 않습니다. 비슷한 질문에 대한 내 대답을 보려면 여기를 클릭하십시오
Fabien Quatravaux

1
이것은 훌륭합니다. 사용자 정의 분류법에 계층 적 URL을 추가하는 데 사용했습니다.
Brian Peat
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.