すでに登録されている分類法を変更する方法


18

今日、サードパーティのプラグインによってすでに登録されているカスタム分類の引数を変更する必要がありました。具体的には、show_admin_column引数を設定しtruerewriteスラッグを変更し、分類学のスラッグではないようにしました。この場合、「People Category」カスタム分類を持つ「People」投稿タイプでした。

これは以前は聞かれなかったことに驚いたので、ここに質問と回答があります。


立ち往生している人のための補足として、結果を確認する前にパーマリンクをフラッシュすることを忘れないでください。
un.pez.vivo

回答:


22

register_taxonomy()仕事のためのツールです。コーデックスから:

この関数は、分類法を追加または上書きします。

1つのオプションは、コピーし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 );

上記の3番目のregister_taxonomy()引数を予想される配列型に型キャストすることに注意してください。これは、or を処理できるregister_taxonomy()用途として厳密には必要ありません。言った、のはとして提出することになっている、これは私に右に感じるので、コーデックスによります。wp_parse_args()objectarrayregister_taxonomy()$argsarray


フラットな分類を階層的な分類に変更するために、これを実行しようとしています。階層プロパティをtrueに変更しているだけです。こうすることで、ポスト編集画面の右側の分類のための2つのメタボックスを引き起こし、私は実際のタクソノミーを追加することができないんだ...
ジョエルWorsham

'people_category'元の分類法と同じスラッグ(例:)を使用して、上書きするようにしてください。
mrwweb

1
天才!純粋な天才!完全に機能しました!
-DaveyJake

1
このソリューションに問題が見つかりました。capabilitiesパラメーターは内部に保存されるcapため、新しい登録済みの分類法に渡されません。同様の質問に対する私の答えをご覧ください
ファビアンクアトラヴォー

1
これは素晴らしいことです。階層型URLをカスタム分類に追加するために使用しました。
ブライアンピート
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.