Intereting Posts
Выровнять миниатюру Как распределить кнопку браузера после выхода из системы? Пользовательское создание тем и постоянные ссылки Фиксирование медиа-ссылок после импорта в многопользовательский Необходимо хранить пользовательскую информацию (много-много связей), предпочтительно не как пользовательский мета Пользовательский указатель WordPress показывает пустую страницу Multisite 'Welcome User Email' SITE_NAME возвращает имя сети, а не название блога Добавьте в цикл привязки URL-адрес wp_link_pages сообщения Как правильно обновить пароль базы данных WordPress? WordPress на Mac не загружает страницу администратора Как вызвать пользовательские данные полей категории в теме? Как удалить изображение из фида? Пользовательская структура Permalink с пользовательскими типами сообщений с использованием пользовательских таксономий Запускать только при активации плагина вместо wp_head Как удалить / заменить текущий шаблон страницы?

Как создать и заполнить несколькими ссылками меню в дочерней теме functions.php?

Официальная тема Twenty Thirteen определяет только одно меню в файле /wp-content/themes/twentythirteen/header.php :

<?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'nav-menu', 'menu_id' => 'primary-menu' ) ); ?> 

В дочерней теме моего веб-сайта я пытаюсь заполнить это меню программно в файле /wp-content/themes/twentythirteen-child/functions.php , потому что:

  1. Он упрощает переустановку веб-сайта (меньше ручных шагов).
  2. Последний пункт меню должен указывать на ссылку / player-ID .

Поэтому я попытался добавить код:

 function my_register_menus() { register_nav_menus( array( 'primary-menu' => __( 'Primary Menu' ), ) ); } add_action( 'init', 'my_register_menus' ); 

но это ничего не меняет в появлении веб-сайта.

Также я прочитал меню навигации в Справочнике тем (включая ссылки API) и до сих пор не понимаю, как передать массив ссылок в меню.

Я, вероятно, должен вызвать wp_nav_menu () с некоторым массивом объектов, но не могу найти описание таких объектов.

В конце я хотел бы добавить 4 ссылки в меню:

  1. «Играть в игру» – /
  2. «Android» – /android
  3. "iOS" – /ios
  4. «Ваш профиль» – /player-ID (возьмет ID из wp_get_current_user () )

Solutions Collecting From Web of "Как создать и заполнить несколькими ссылками меню в дочерней теме functions.php?"

Ну вот. Поскольку у вас уже есть идентификатор меню, вам нужно:

 $menu_item_defaults = array( 'menu-item-db-id' => $menu_item_db_id, 'menu-item-object-id' => 0, 'menu-item-object' => '', 'menu-item-parent-id' => 0, 'menu-item-position' => 1, 'menu-item-title' => 'Play Game', 'menu-item-url' => '',//not sure is a blank is ok here 'menu-item-description' => '', 'menu-item-attr-title' => '', 'menu-item-target' => '', 'menu-item-classes' => '', 'menu-item-xfn' => '', 'menu-item-status' => 'publish', ); wp_update_nav_menu_item('primary-menu', 0, $menu_item_defaults); 

Тем не менее, вы пытаетесь ускорить развертывание сайта с известным контентом, попробуйте его таким образом. Вы можете создать страницу и добавить ее в меню все «на лету».

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

 $menu_exists = wp_get_nav_menu_object( 'Public Menu' ); if ( $menu_exists === false ) { $var_pub_menu_id = wp_create_nav_menu( 'Public Menu' ); } else { $var_pub_menu_id = $menu_exists->term_id; } 

Затем я создаю свою страницу и добавляю ее в меню:

 $default_fgpsn_page = array( 'post_title' => $fgpsn_default_pages[$j],//any page title. I'm working in a loop here 'post_status' => 'publish', 'post_type' => 'page', 'post_content' => 'Property Browse Short Code',//this can even be a shortcode 'post_author' => 1 ); $default_fgpsn_page_id = wp_insert_post( $default_fgpsn_page ); $menu_item_defaults = array( //'menu-item-db-id' => $menu_item_db_id, //'menu-item-object-id' => 0, //'menu-item-object' => '', 'menu-item-parent-id' => 0, 'menu-item-position' => 1, 'menu-item-title' => $fgpsn_default_pages[$j], 'menu-item-url' => get_page_link( $default_fgpsn_page_id ), 'menu-item-description' => 'public properties listing', 'menu-item-attr-title' => '', 'menu-item-target' => '', 'menu-item-classes' => '', 'menu-item-xfn' => '', 'menu-item-status' => 'publish', ); wp_update_nav_menu_item($var_pub_menu_id, 0, $menu_item_defaults);