2016-05-30 2 views
-1

Я хотел бы удалить все навигационные меню, зарегистрированные с помощью register_nav_menu или аналогичные функции. Может кто-то помочь мне с этим? Это то, что я пробовал.Удаление навигационного меню WordPress

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_menu_object» -> если запрошенное меню находится/тема меню местоположения «wp_get_nav_menus» -> если ни один из предыдущих которые найдены

например

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

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

    return $menus; 
} 
+0

Что вы сказали правильно 1+, но я не заметил, что моя тема используется 'wp_get_nav_menu_object' вместо' wp_nav_menu' так вот почему это вызвало некоторые проблемы. Я должен был использовать крючки. Спасибо. – JMRC

Смежные вопросы