web-dev-qa-db-ja.com

各投稿の種類から「publish metabox」を削除する方法

どのように、各投稿の種類(投稿、ページ、custom_post_type)から「Publish metabox」を削除するにはどうすればいいですか。

投稿タイプごとに手動で削除する方法はわかりますが、グローバルに削除する方法はありますか。

remove_metabox(...)
1
Jakub Kohout

ブラウザ開発者向けツールに慣れている場合は、メタボックスID(コンテナのdiv ID)をすぐに見つけることができます。この場合、それはsubmitdivと呼ばれます。これを削除するには、 remove_meta_box() 関数を使用します。形式は次のとおりです。

remove_meta_box( 'metabox_id', 'post_type', 'default_position' );
remove_meta_box( 'submitdiv',  'post',      'side'             );

これが デフォルトのメタボックスIDのリストですすべての投稿タイプから特定のメタボックスを削除する場合は、最初に get_post_types() functionを使用してすべての投稿タイプを取得する必要があります。これは配列を返します。それから、post_typeremove_meta_box()関数に渡して、メタボックスをループして削除できます。

/**
 * Hide Metaboxes For All Post Types
 */
function hide_publish_metabox() {
    $post_types = get_post_types( '', 'names' );

    if( ! empty( $post_types ) ) {
        foreach( $post_types as $type ) {
            remove_meta_box( 'submitdiv', $type, 'side' );
        }
    }
}
add_action( 'do_meta_boxes', 'hide_publish_metabox' );
2
Howdy_McGee