web-dev-qa-db-ja.com

Post_categories_metaboxでカテゴリ階層を強制するより良い方法

目的は、投稿を編集するときに、階層分類を一覧表示するメタボックスが、更新時にチェック済みアイテムを一番上に表示するように並べ替えないようにすることです。

今のところ、edit-form-advanced.phpadd_meta_box()を呼び出し、post_categories_meta_boxで定義されているmeta-boxes.phpのコールバックを渡します。

post_categories_meta_box()wp_terms_checklist()を呼び出し、checked_ontopパラメーターは未定義のままにします。 wp_terms_checklist()は、このパラメータのデフォルトをtrueにします。これは、このすべてのフープラの根本的な原因です。

バックアウトしてadd_meta_boxesadd_meta_boxes_{$post_type}が見つかるまで、チェーンのどこかにフィルターフックが見つかるようにします。

私が思いついた唯一の解決策は、これらのアクションの1つをグローバル化して$wp_meta_boxesをグローバル化し、post_categories_meta_boxコールバックの発生を自分のコールバックに置き換えることです。ここではpost_categories_meta_box()をすべて複製し、パラメーター'checked_ontop' => falseを追加するだけです。 。

動作します。しかし、ばかばかしい。これはばかげているように思えます - あなたの階層的分類法がメタボックスでそれらの順序を保つようにするためのもっとエレガントな方法はもうありませんか?

3
Tom Auger

WordPressのこの「機能」を修正するために特別に書かれたプラグインがあり、それは カテゴリチェックリストツリー と呼ばれます。名前にもかかわらず、それはカスタム分類法でも機能します。

2
Emzo