scottb
  • 0
Гуру

Как назначить пользовательское навигационное меню WP 3.0 местоположению навигационного меню темы с помощью скрипта?

  • 0

Я использую этот скрипт внутри плагина, чтобы создать новое пользовательское меню на лету и назначить ему страницу…

$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' );
wp_update_nav_menu_item( $menu_id, 0, $menu );

И это прекрасно работает. Однако я застрял на том, как подключить это меню к одному из «Местоположений меню» моей темы. Поскольку я регистрирую местоположение навигации под названием «header-menu» в файле functions.php моей темы, я подумал, что приведенный выше код, вызывающий wp_create_nav_menu(‘header-menu’), подключит мое пользовательское меню к местоположению, определенному в моей теме как «заголовок-меню», но это не так.

Например, моя тема регистрирует два местоположения меню…

register_nav_menus(
  array('header-menu' => __( 'My Header Menu' ), 
 'footer-menu' => __( 'Footer Menu' ))
);

Как я могу подключить «Меню заголовка», которое я создал с помощью wp_create_nav_menu («Меню заголовка»), к местоположению «Мое меню заголовка», которое я зарегистрировал в своей теме? Я уверен, что ответ находится где-то в nav-menu.php, но я не могу его найти.

т. е. я могу сделать это вручную из диспетчера WordPress «Внешний вид > Меню» и в разделе «Расположения тем > Главное меню навигации» я выбираю «Меню заголовка» и нажимаю «Сохранить». Я пытаюсь сделать это в сценарии.

Share
  1. Если вы уже нашли ответ на этот вопрос, который вам подходит, я рекомендую вам опубликовать его здесь, чтобы другие могли его увидеть. Если нет, то я бы использовал настраиваемый фильтр или действие.

    Если меню выводится в теме, используйте apply_filters или do_action для запуска нужного переопределения, а в своем плагине подключитесь к этому действию/фильтру, чтобы вывести переопределение. Это более безопасный способ выполнения той же задачи, так как вы не перезаписываете ассоциацию меню.

    • 0

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

You must login to add an answer.