web-dev-qa-db-ja.com

カスタム分類メタボックスのコールバック関数を探す

カスタム分類メタボックス(右側)を投稿エリア(中央)に移動する方法を探しています。私はあなたがそれをドラッグアンドドロップすることができることを知っています、しかし私は新しいユーザーのためにデフォルトで投稿エリアにそれが欲しいです。

私のアプローチは、remove_meta_box()を使ってそれを削除し、それからadd_meta_box()を使ってそれを再び追加することでした。問題は、追加したときにどのコールバック関数を呼び出すのかわかりません。

/* Remove movies metabox from sidepanel */
function hide_metabox(){
    remove_meta_box( 'tagsdiv-movies', 'movies' , 'side' );
}
add_action( 'admin_menu' , 'hide_metabox' );


/* Add back movies metabox, but in post area */
add_action('add_meta_boxes', 'add_back_post');
    function add_back_post(){
    /* Not sure what to put as the thrid argument */
    add_meta_box('tagsdiv-movies','Movies', 'WHAT_CALLBACK_ARG', 'movies', 'normal', 'high');
}

Custom metabox "movies" 

補足として、 カスタム投稿タイプUI (CPT UI)を使用して分類法を作成しました。これは基本的に、カスタム分類法を作成するときの標準的な手順に従います。

私がここで提供される情報に全く従わないのでこれが私の質問に答えるかどうかもわかりません: カスタムカテゴリのための事前定義されたコールバック関数はありますか?

3
Dom

非階層的分類法に必要なコールバックはpost_tags_meta_boxです。

階層分類法に必要なコールバックはpost_categories_meta_boxです。

あなたの例では、コードは次のようになります。

/* Remove movies metabox from sidepanel */
function hide_metabox(){
    remove_meta_box(
        'tagsdiv-movies',
        'your-post-type' ,
        'side'
    );
}
add_action( 'admin_menu' , 'hide_metabox' );


/* Add back movies metabox, but in post area */
add_action('add_meta_boxes', 'add_back_post');
    function add_back_post(){
    add_meta_box(
        'tagsdiv-movies',
        'Movies',
        'post_tags_meta_box',
        'your-post-type',
        'normal',
        'high',
        array( 'taxonomy' => 'movies' )
    );
}

もう1つの重要な変数はメタボックスIDです。あなたの例では、tagsdiv-moviesは、スラッグmoviesを持つ非階層的分類法のメタボックスをターゲットにしています。同じ分類法が階層的であれば、IDはmoviesdivになります。

5
Milo