wp-admin/nav-menus.php
にアクセスしてもメニューが表示されない場合は、使用できないメタボックスのセットが表示されます。彼らがする唯一のことは、メニュー作成ダイアログから注意を引くことです。
メニューがあるまでそれらのボックスを隠したい。
どうやってやるの?
wp-admin/nav-menus.php
には2つの重要なグローバル変数があります。
$nav_menus
は、 wp_get_nav_menus()
で埋められた、利用可能なすべてのメニューの配列です。$wp_meta_boxes['nav-menus']
は、この画面で利用可能なすべてのメタボックスの配列です。最初の変数が設定された後に呼び出されるadmin_head-nav-menus.php
にフックして、2番目の変数を変更することができます。
add_action( 'admin_head-nav-menus.php', 't5_hide_dead_menu_metaboxes' );
/**
* Remove metaboxes for menu items when no menu exists.
*
* @wp-hook admin_head-nav-menus.php
* @return void
*/
function t5_hide_dead_menu_metaboxes()
{
empty ( $GLOBALS['nav_menus'] )
and $GLOBALS['wp_meta_boxes']['nav-menus'] = array ();
}
GitHubから プラグインとしてT5死んだメニューのメタボックスを隠す 。
追加情報:
メタボックスを削除した後、画面は少し変に見えます。少し初期のフックを変更し、見栄えを良くするためにいくつかのスタイルを追加することができます。だから私たちのフックは次のようになります。
/**
* Remove metaboxes for menu items when no menu exists.
*
* @wp-hook admin_head-nav-menus.php
* @return void
*/
function t5_hide_dead_menu_metaboxes()
{
if ( empty( $GLOBALS['nav_menus'] ) ) {
$GLOBALS['wp_meta_boxes']['nav-menus'] = array ();
echo '<style> #nav-menus-frame { margin-left: 0 !important; padding-top: 20px; } </style>';
}
}
そうすると、画面はより自然に見えます。