それがどのページでも大きく異なるかどうかはわかりませんが、Wordpressのコアファイルに移動して削除する必要なしに、外観>メニューページからメタボックスを削除する方法を考えています。上書きしてページと画面オプションメニューの両方に表示されないようにするためにできることはありますか。
ファイル/wp-admin/nav-menus.php
を調べると、これらのメタボックスがわかります。
でレンダリングされます:
<?php do_meta_boxes( 'nav-menus', 'side', null ); ?>
ファイル/wp-admin/includes/nav-menu.php
には、対応するadd_meta_box()
呼び出しが含まれており、そこから関連する削除コードを構築できます。
function custom_remove() {
remove_meta_box('nav-menu-theme-locations', 'nav-menus', 'side');
remove_meta_box('add-custom-links', 'nav-menus', 'side');
remove_meta_box('add-post', 'nav-menus', 'side');
remove_meta_box('add-page', 'nav-menus', 'side');
remove_meta_box('add-category', 'nav-menus', 'side');
}
add_action('admin_head-nav-menus.php', 'custom_remove');
これらのメタボックスがレンダリングされる前に呼び出されるので、たとえばadmin_head-nav-menus.php
アクションを使用できます。
カスタム投稿タイプ(またはカスタム分類法)がある場合は、次のようにしてメタボックスを削除できます。
remove_meta_box( 'add-xxx' , 'nav-menus' , 'side' );
xxx
は対応する名前です。
メタボックスがどのように追加されているかを見るために、関数wp_nav_menu_setup()
、wp_nav_menu_post_type_meta_boxes()
およびwp_nav_menu_taxonomy_meta_boxes()
をさらに調べることができます。
if (!is_admin()) return;
// See https://developer.wordpress.org/reference/functions/wp_nav_menu_taxonomy_meta_boxes/
// $taxonomy_object is of type WP_Post_Type
add_filter('nav_menu_meta_box_object', function ($taxonomy_object) {
if (in_array($taxonomy_object->name, ['page', 'post', 'category'] )) {
return null;
}
return $taxonomy_object;