目的は、投稿を編集するときに、階層分類を一覧表示するメタボックスが、更新時にチェック済みアイテムを一番上に表示するように並べ替えないようにすることです。
今のところ、edit-form-advanced.php
はadd_meta_box()
を呼び出し、post_categories_meta_box
で定義されているmeta-boxes.php
のコールバックを渡します。
post_categories_meta_box()
はwp_terms_checklist()
を呼び出し、checked_ontop
パラメーターは未定義のままにします。 wp_terms_checklist()
は、このパラメータのデフォルトをtrue
にします。これは、このすべてのフープラの根本的な原因です。
バックアウトしてadd_meta_boxes
とadd_meta_boxes_{$post_type}
が見つかるまで、チェーンのどこかにフィルターフックが見つかるようにします。
私が思いついた唯一の解決策は、これらのアクションの1つをグローバル化して$wp_meta_boxes
をグローバル化し、post_categories_meta_box
コールバックの発生を自分のコールバックに置き換えることです。ここではpost_categories_meta_box()
をすべて複製し、パラメーター'checked_ontop' => false
を追加するだけです。 。
動作します。しかし、ばかばかしい。これはばかげているように思えます - あなたの階層的分類法がメタボックスでそれらの順序を保つようにするためのもっとエレガントな方法はもうありませんか?
WordPressのこの「機能」を修正するために特別に書かれたプラグインがあり、それは カテゴリチェックリストツリー と呼ばれます。名前にもかかわらず、それはカスタム分類法でも機能します。