scottb
  • 0
Гуру

Пользовательское меню навигации создается со страницами по умолчанию, но не привязано к расположению пользовательского меню темы

  • 0

Сценарий ниже создает навигационное меню и назначает ему страницу. Все работает отлично, за исключением того, что навигационное меню не назначается автоматически для местоположения «Header-menu» моей темы.

Есть идеи, почему?

//Register menu locations for the theme
add_action( 'init', 'register_my_menus' );
function register_my_menus() {
  register_nav_menus(
    array('header-menu' => __( 'Header Menu' ), 'footer-menu' => __( 'Footer Menu' ))
  );
}

//Create a nav menu, add a page to it and assign it to the theme's "header-menu" location.
$menu_id = wp_create_nav_menu( 'header-menu' );
$menu = array( 
    'menu-item-type' => 'custom', 
    'menu-item-url' => get_home_url('/'),
    'menu-item-title' => 'Home', 
    'menu-item-status' => 'publish', 
    'theme_location' => 'header-menu', //Just a guess but didn't work!!!
    );
wp_update_nav_menu_item( $menu_id, 0, $menu );
Share
  1. wp_create_nav_menu() Функция принимает имя меню, а не местоположение меню. а что касается wp_update_menu_item() блюд, а не самого меню. Покопавшись в коде, я обнаружил, что «назначение» «местоположения темы» меню выполняется не с использованием API nav_menu в WordPress, а с параметрами темы, поэтому:

    //first get the current theme
    $theme = get_current_theme();
    //get theme's mods
    $mods = get_option("mods_$theme");
    //update mods with menu id at theme location
    $mods['nav_menu_locations']['header-menu'] = $menu_id;
    update_option("mods_$theme", $mods);
    

    надеюсь это поможет 🙂

    • 0

Оставить ответ

You must login to add an answer.