2016-05-30 13 views
-1

register_nav_menuまたは類似の機能で登録されたすべてのナビゲーションメニューを削除したいと思います。誰かがこれで私を助けることができますか?これが私が試したことです。ワードプレスの削除ナビゲーションメニュー

public static function _modify_template(){ 
    global $_wp_registered_nav_menus; 
    $_wp_registered_nav_menus = array(); 
} 
add_action('wp', array(__CLASS__, '_modify_template')); 

wp_delete_nav_menu私はwp_create_nav_menu、ないregister_nav_menuのために意図された時にかなり確信しているものの、いずれかの動作しません。

ありがとうございました!

答えて

0

実際にナビゲーションが表示されないようにするために、このソリューションを使用しました。

if($no_nav){ 
    // Avoid `wp_nav_menu` outputting data before any database calls are made. 
    add_filter('pre_wp_nav_menu', '_disable_navigation_menu'); 

    // Avoid `wp_get_nav_menu_object`, which is deeper to the core, from returning any data. 
    // The filter above should be used with this one as you don't want WordPress to create a default navigation menu. 
    add_filter('wp_get_nav_menu_object', '_disable_navigation_menu'); 
} 

function _disable_navigation_menu($output) 
{ 
    return ''; 
} 
1
function unhook_menus(){ 
    $menus = get_registered_nav_menus(); 

    foreach($menus as $name=>$desc){ 
     unregister_nav_menu($name); 
    } 

    $menus= get_registered_nav_menus(); 

    var_dump($menus); 
    if(!$menus) 
     echo 'empty'; 

    exit; 

} 

add_action('init', 'unhook_menus', 100); // if not working double check when menus are actually registered!! 

....それはそれでアイテムで何かを探しますので、メニューはデシベルアイテムです、あなたをこれは、あなたが尋ねた何であるの登録メニューを削除しますが、これは実際にはメニューが表示されませんという意味ではありません>要求されたメニューが発見された場合/テーマ場所メニュー 「wp_get_nav_menus」 - - >前回のどちらが発見された場合

「wp_get_nav_menu_object」を呼び出すために使用されるコードに応じて、周り突くためにフィルタを使用することができます例えば

add_filter('wp_get_nav_menus', 'inspect', 10, 2); 

function inspect($menus,$args){ 
    var_dump($menus); 
    var_dump($args); 

    return $menus; 
} 
+0

あなたが言ったことは正しい1+ですが、それはいくつかの問題を引き起こした理由ですので、私が代わりに 'wp_nav_menu'の私のテーマはwp_get_nav_menu_object''使用していることに気づきませんでした。フックを使うべきだった。感謝。 – JMRC

関連する問題