web-dev-qa-db-ja.com

カスタム分類法のメタボックスの優先順位を変更する

新しいカスタム分類法を作成しています( not カスタム投稿タイプ)。投稿編集ページでは、このカスタム分類法が他のすべてのメタボックスの上に表示されています。私はそれがグループの中でより低く沈むことを望みます。

私はadd_meta_box()で優先順位を追加できることを知っています。残念ながら、register_taxonomy()を呼び出して作成したデフォルトのメタボックスを使用しているので、優先順位の値を変更することはできません。

関連付けられているメタボックスがメタボックスのグループの下位に表示されるように、カスタム分類の優先順位を変更する方法を教えてください。

ありがとうございます。 :)

4
rinogo

WPでよく見られるように、この問題を解決する方法はいくつかあります。これが一つの可能​​な方法です:

function my_meta_box_order() {
    global $wp_meta_boxes;
    $genre = $wp_meta_boxes['post']['side']['core']['genrediv'];
    unset($wp_meta_boxes['post']['side']['core']['genrediv']);
    $wp_meta_boxes['post']['side']['core'] = array('genrediv' => $genre) + $wp_meta_boxes['post']['side']['core'];
}
add_action('add_meta_boxes_post', 'my_meta_box_order');
# We're hooking into: do_action('add_meta_boxes_' . $post_type, $post);

$wp_meta_boxesはすべてのメタボックス情報を保持します。 $wp_meta_boxes[$page][$context][$priority][$id]のように配置されています。あなたはあなたの箱を並べ替えるために望み通りにそれを操作することができます。もちろんこれはドラッグ&ドロップで上書きすることができます。

参考までに、ここにラッチできるフックがいくつかあります。

do_action('add_meta_boxes', $post_type, $post);
do_action('add_meta_boxes_' . $post_type, $post);
do_action('do_meta_boxes', $post_type, 'normal', $post);
do_action('do_meta_boxes', $post_type, 'advanced', $post);
do_action('do_meta_boxes', $post_type, 'side', $post);

乾杯〜

3
Matthew Boynes