/** * When publishing a new child page, add it to the appropriate custom menu. * @param string $post_id current edit post id * @author Romain DORR */ public static function automatic_add_sub_pages($post_id) { // Theme supports custom menus? if (!current_theme_supports('menus')) { return false; } // Published page has parent? $post = get_post($post_id); if (!$post->post_parent) { return; } // Get all menus for this theme $menus = get_registered_nav_menus(); // Get all locations $locations = get_nav_menu_locations(); // Get Plugin option $auto_add_option = get_option('menu_aasp_options'); // if no menus are configured if (empty($auto_add_option)) { return false; } // Loop through the menus to find page parent foreach ($menus as $menu_name => $menu) { if (!isset($locations[$menu_name])) { continue; } $menu = wp_get_nav_menu_object($locations[$menu_name]); // Test if menu is configure for auto add submenus if (empty($auto_add_option[$menu->term_id])) { continue; } $menu_parent = null; $menu_items = wp_get_nav_menu_items($menu->term_id, array('post_status' => 'publish,draft')); if (!is_array($menu_items)) { continue; } foreach ($menu_items as $menu_item) { // Item already in menu? if ($menu_item->object_id == $post->ID) { continue 2; } if ($menu_item->object_id == $post->post_parent) { $menu_parent = $menu_item; } } // Add new item if ($menu_parent) { wp_update_nav_menu_item($menu->term_id, 0, array('menu-item-object-id' => $post->ID, 'menu-item-object' => $post->post_type, 'menu-item-parent-id' => $menu_parent->ID, 'menu-item-type' => 'post_type', 'menu-item-status' => 'publish')); } } }
function xt_install_menu($global) { $menu_id = wp_create_nav_menu('新淘客菜单'); if ($menu_id) { //home wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'custom', 'menu-item-url' => get_home_url('/'), 'menu-item-title' => '首页', 'menu-item-status' => 'publish', 'menu-item-position' => 1)); //shares wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'custom', 'menu-item-url' => xt_get_shares_search_url(), 'menu-item-title' => '逛街啦', 'menu-item-status' => 'publish', 'menu-item-position' => 2)); //albums wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'custom', 'menu-item-url' => xt_get_albums_search_url(), 'menu-item-title' => '专辑', 'menu-item-status' => 'publish', 'menu-item-position' => 3)); //taobaos wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'custom', 'menu-item-url' => xt_get_taobao_search_url(), 'menu-item-title' => '淘宝', 'menu-item-status' => 'publish', 'menu-item-position' => 6)); //paipais wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'custom', 'menu-item-url' => xt_get_paipai_search_url(), 'menu-item-title' => '拍拍', 'menu-item-status' => 'publish', 'menu-item-position' => 7)); //bijias wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'custom', 'menu-item-url' => xt_get_bijia_search_url(), 'menu-item-title' => '比价', 'menu-item-status' => 'publish', 'menu-item-position' => 8)); //tuans wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'custom', 'menu-item-url' => xt_get_tuan_search_url(), 'menu-item-title' => '团购', 'menu-item-status' => 'publish', 'menu-item-position' => 9)); //coupons wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'custom', 'menu-item-url' => xt_get_coupon_search_url(), 'menu-item-title' => '折扣', 'menu-item-status' => 'publish', 'menu-item-position' => 10)); //temais wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'custom', 'menu-item-url' => xt_get_temai_search_url(), 'menu-item-title' => '特卖', 'menu-item-status' => 'publish', 'menu-item-position' => 11)); //stars wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'custom', 'menu-item-url' => xt_site_url('stars'), 'menu-item-title' => '明星', 'menu-item-status' => 'publish', 'menu-item-position' => 12)); //brands wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'custom', 'menu-item-url' => xt_site_url('brands'), 'menu-item-title' => '品牌', 'menu-item-status' => 'publish', 'menu-item-position' => 13)); set_theme_mod('nav_menu_locations', array('primary' => $menu_id)); $global['isMenu'] = 1; update_option(XT_OPTION_GLOBAL, $global); } }
function landing_setup() { load_theme_textdomain('landing', get_template_directory() . '/languages'); add_theme_support("title-tag"); add_theme_support('menus'); add_theme_support('post-thumbnails'); $menu_name = 'landing'; $menu_exists = wp_get_nav_menu_object($menu_name); if (!$menu_exists) { $menu_id = wp_create_nav_menu($menu_name); wp_update_nav_menu_item($menu_id, 0, array('menu-item-title' => __('Обо мне', 'landing'), 'menu-item-url' => home_url('/#about'), 'menu-item-status' => 'publish')); wp_update_nav_menu_item($menu_id, 0, array('menu-item-title' => __('Резюме', 'landing'), 'menu-item-url' => home_url('/#resume'), 'menu-item-status' => 'publish')); wp_update_nav_menu_item($menu_id, 0, array('menu-item-title' => __('Портволио', 'landing'), 'menu-item-url' => home_url('/#portfolio'), 'menu-item-status' => 'publish')); wp_update_nav_menu_item($menu_id, 0, array('menu-item-title' => __('Контакты', 'landing'), 'menu-item-url' => home_url('/#contacts'), 'menu-item-status' => 'publish')); } $menu_name = 'social'; $menu_exists = wp_get_nav_menu_object($menu_name); if (!$menu_exists) { $menu_id = wp_create_nav_menu($menu_name); wp_update_nav_menu_item($menu_id, 0, array('menu-item-title' => __('Twitter profile', 'landing'), 'menu-item-target' => '_blank', 'menu-item-url' => '#', 'menu-item-classes' => 'fa fa-twitter', 'menu-item-status' => 'publish')); wp_update_nav_menu_item($menu_id, 0, array('menu-item-title' => __('Facebook profile', 'landing'), 'menu-item-target' => '_blank', 'menu-item-url' => '#', 'menu-item-classes' => 'fa fa-facebook', 'menu-item-status' => 'publish')); wp_update_nav_menu_item($menu_id, 0, array('menu-item-title' => __('Github profile', 'landing'), 'menu-item-target' => '_blank', 'menu-item-url' => '#', 'menu-item-classes' => 'fa fa-github', 'menu-item-status' => 'publish')); wp_update_nav_menu_item($menu_id, 0, array('menu-item-title' => __('Vk profile', 'landing'), 'menu-item-target' => '_blank', 'menu-item-url' => '#', 'menu-item-classes' => 'fa fa-vk', 'menu-item-status' => 'publish')); } }
function duplicate($id = null, $name = null) { // sanity check if (empty($id) || empty($name)) { return false; } $id = intval($id); $name = sanitize_text_field($name); $source = wp_get_nav_menu_object($id); $source_items = wp_get_nav_menu_items($id); $new_id = wp_create_nav_menu($name); if (!$new_id) { return false; } // key is the original db ID, val is the new $rel = array(); $i = 1; foreach ($source_items as $menu_item) { $args = array('menu-item-db-id' => $menu_item->db_id, 'menu-item-object-id' => $menu_item->object_id, 'menu-item-object' => $menu_item->object, 'menu-item-position' => $i, 'menu-item-type' => $menu_item->type, 'menu-item-title' => $menu_item->title, 'menu-item-url' => $menu_item->url, 'menu-item-description' => $menu_item->description, 'menu-item-attr-title' => $menu_item->attr_title, 'menu-item-target' => $menu_item->target, 'menu-item-classes' => implode(' ', $menu_item->classes), 'menu-item-xfn' => $menu_item->xfn, 'menu-item-status' => $menu_item->post_status); $parent_id = wp_update_nav_menu_item($new_id, 0, $args); $rel[$menu_item->db_id] = $parent_id; // did it have a parent? if so, we need to update with the NEW ID if ($menu_item->menu_item_parent) { $args['menu-item-parent-id'] = $rel[$menu_item->menu_item_parent]; $parent_id = wp_update_nav_menu_item($new_id, $parent_id, $args); } // allow developers to run any custom functionality they'd like do_action('duplicate_menu_item', $menu_item, $args); $i++; } return $new_id; }
private function processMenu(&$menu) { $objMenu = wp_get_nav_menu_object($menu->slug); if (!$objMenu) { $id = wp_create_nav_menu($menu->slug); $objMenu = wp_get_nav_menu_object($menu->slug); } $menuId = $objMenu->term_id; $menu->id = $menuId; wp_set_current_user(1); $loggedInmenuItems = wp_get_nav_menu_items($menu->slug); wp_set_current_user(0); $notloggedInmenuItems = wp_get_nav_menu_items($menu->slug); $existingMenuItems = array_merge($loggedInmenuItems, $notloggedInmenuItems); foreach ($existingMenuItems as $existingMenuItem) { $ret = wp_delete_post($existingMenuItem->ID, true); } foreach ($menu->items as &$objMenuItem) { $newTarget = findTargetPostId($objMenuItem->meta->postMeta['_menu_item_object_id'][0]); $parentItem = $this->findMenuItem($objMenuItem->meta->postMeta['_menu_item_menu_item_parent'][0]); $args = ['menu-item-title' => $objMenuItem->meta->post_title, 'menu-item-position' => $objMenuItem->meta->menu_order, 'menu-item-description' => $objMenuItem->meta->post_content, 'menu-item-attr-title' => $objMenuItem->meta->post_title, 'menu-item-status' => $objMenuItem->meta->post_status, 'menu-item-type' => $objMenuItem->meta->postMeta['_menu_item_type'][0], 'menu-item-object' => $objMenuItem->meta->postMeta['_menu_item_object'][0], 'menu-item-object-id' => $newTarget, 'menu-item-url' => $objMenuItem->meta->postMeta['_menu_item_url'][0], 'menu-item-parent-id' => $parentItem]; $ret = wp_update_nav_menu_item($menuId, 0, $args); $objMenuItem->id = $ret; foreach ($objMenuItem->meta->postMeta as $key => $meta) { if (in_array($key, $this->skipped_meta_fields) || substr($key, 0, 1) == '_') { continue; } $val = $meta[0]; update_post_meta($ret, $key, $val); } } }
/** * * Function for registering wp_nav_menu() in 3 locations */ function bb_register_navmenus() { register_nav_menus(array('Top' => __('Top Navigation'), 'Header' => __('Header Navigation'), 'Footer' => __('Footer Navigation'))); // Check if Top menu exists and make it if not if (!is_nav_menu('Top')) { $menu_id = wp_create_nav_menu('Top'); $menu = array('menu-item-type' => 'custom', 'menu-item-url' => get_home_url('/'), 'menu-item-title' => 'Home'); wp_update_nav_menu_item($menu_id, 1, $menu); } // Check if Header menu exists and make it if not if (!is_nav_menu('Header')) { $menu_id = wp_create_nav_menu('Header'); $menu = array('menu-item-type' => 'custom', 'menu-item-url' => get_home_url('/'), 'menu-item-title' => 'Home'); wp_update_nav_menu_item($menu_id, 1, $menu); } // Check if Footer menu exists and make it if not if (!is_nav_menu('Footer')) { $menu_id = wp_create_nav_menu('Footer'); $menu = array('menu-item-type' => 'custom', 'menu-item-url' => get_home_url('/'), 'menu-item-title' => 'Home'); wp_update_nav_menu_item($menu_id, 1, $menu); } // Get any menu locations that dont have a menu assigned to it and give it on /* $loc = array('Top', 'Header', 'Footer'); if ( has_nav_menu( $location )) { $locations = get_nav_menu_locations(); return (!empty( $locations[ $location ] )); } */ }
private function _402() { /* Fixed double key active_plugins */ $plugins = get_option('active_plugins'); if (is_array($plugins)) { $_plugins = array(); foreach ($plugins as $plugin) { if (!in_array($plugin, $_plugins)) { array_push($_plugins, $plugin); } } update_option('active_plugins', $_plugins); } /* Create new menu - top nav */ $menu_name = 'Top Navigation'; //wp_delete_nav_menu( $menu_name ); $menu_exists = wp_get_nav_menu_object($menu_name); if (!$menu_exists) { $menu_id = wp_create_nav_menu($menu_name); wp_update_nav_menu_item($menu_id, 0, array('menu-item-title' => __('<i class="fa fa-lock"></i> Login'), 'menu-item-url' => home_url('/?action=login'), 'menu-item-status' => 'publish')); wp_update_nav_menu_item($menu_id, 0, array('menu-item-title' => __('<i class="fa fa-pencil-square-o"></i> Register'), 'menu-item-url' => home_url('/?action=register'), 'menu-item-classes' => 'two active', 'menu-item-status' => 'publish')); $thememods = 'theme_mods_' . get_option('stylesheet', true); $mod = get_option($thememods); if (!isset($mod)) { $mod = array('nav_menu_locations' => array('top_nav' => $menu_id)); } else { $mod['nav_menu_locations']['top_nav'] = $menu_id; } add_option($thememods, $mod) || update_option($thememods, $mod); } }
function after_validate_fields($instance = '') { if (isset($instance['menu_id']) && isset($instance['menu_label']) && !empty($instance['menu_id']) && !empty($instance['menu_label'])) { $key = sanitize_key($instance['menu_label']); if (isset($instance['custom_container_id']) && !empty($instance['custom_container_id'])) { $key = $instance['custom_container_id']; } else { $instance['custom_container_id'] = $key; } $menu_link = '#HOME_URL#' . $key; $is_link = false; $menu_item_id = $menu_item_position = 0; $menu_items = wp_get_nav_menu_items($instance['menu_id']); foreach ($menu_items as $menu_item) { if ($menu_item->url == $menu_link) { $menu_item_id = $menu_item->ID; $menu_item_position = $menu_item->menu_order; break; } } wp_update_nav_menu_item($instance['menu_id'], $menu_item_id, array('menu-item-title' => $instance['menu_label'], 'menu-item-classes' => 'internal', 'menu-item-url' => $menu_link, 'menu-item-position' => $menu_item_position, 'menu-item-status' => 'publish')); update_option('menu_check', true); } return $instance; }
/** * create optional test nav menu * * At least two custom menus should be created in order to test a theme * The standard Theme data file now ships with optimal menus built-in * This method actually makes sense with custom WXR files only * * @since 0.2 */ private function create_test_menus() { $pages = get_all_page_ids(); $items = array(); foreach ($pages as $page_ID) { $info = get_page($page_ID); $items[$info->post_title] = get_permalink($page_ID); } # pick three random entries $random = array_rand($items, 3); # build menus $menus = array('Full Menu' => array('slug' => 'full-menu', 'menu_items' => $items), 'Short Menu' => array('slug' => 'short-menu', 'menu_items' => array($items[$random[0]], $items[$random[1]], $items[$random[2]]))); # register menus foreach ($menus as $title => $data) { register_nav_menu($data['slug'], $title); if (false == is_nav_menu($title)) { $menu_ID = wp_create_nav_menu($title); foreach ($data['menu_items'] as $name => $url) { $add_item = array('menu-item-type' => 'custom', 'menu-item-url' => $url, 'menu-item-title' => $name); wp_update_nav_menu_item($menu_ID, 0, $add_item); } WP_CLI::success('Created menu ' . $title); } } }
/** * Register and create a custom BuddyPress menu */ function infinity_register_bp_menu($menu_name) { global $blog_id; // check BP reqs and if our custom default menu already exists if (function_exists('bp_core_get_directory_pages') && BP_ROOT_BLOG == $blog_id && !is_nav_menu($menu_name)) { // doesn't exist, create it $menu_id = wp_create_nav_menu($menu_name); // get bp pages $pages = bp_core_get_directory_pages(); // allowed pages $pages_ok = array('activity' => true, 'blogs' => true, 'forums' => true, 'groups' => true, 'links' => true, 'members' => true); // loop all pages foreach ($pages as $config) { // make sure we support this page if (array_key_exists($config->name, $pages_ok)) { // yep, add page as a nav item wp_update_nav_menu_item($menu_id, 0, array('menu-item-type' => 'post_type', 'menu-item-status' => 'publish', 'menu-item-object' => 'page', 'menu-item-object-id' => $config->id, 'menu-item-title' => $config->title, 'menu-item-attr-title' => $config->title, 'menu-item-classes' => 'icon-' . $config->name)); } } // get location settings $locations = get_theme_mod('nav_menu_locations'); // is main menu location set yet? if (empty($locations['main-menu'])) { // nope, set it $locations['main-menu'] = $menu_id; // update theme mode set_theme_mod('nav_menu_locations', $locations); } } }
/** * Register default menu. * * @since 1.0.0 */ function beans_do_register_default_menu() { // Stop here if a menu already exists. if (wp_get_nav_menus()) { return; } // Set up default menu. wp_update_nav_menu_item(wp_create_nav_menu(__('Navigation', 'beans')), 0, array('menu-item-title' => __('Home', 'beans'), 'menu-item-classes' => 'home', 'menu-item-url' => home_url('/'), 'menu-item-status' => 'publish')); }
function create_pages() { // Argument dla strony Głównej $main_page_args = array('post_status' => 'publish', 'post_type' => 'page', 'post_name' => 'main', 'page_template' => 'page-templates/main.php', 'post_title' => 'Główna', 'post_content' => ''); if (get_page_by_title('Główna') == null) { $main_page = wp_insert_post($main_page_args); update_option('page_on_front', $main_page); update_option('show_on_front', 'page'); echo '<div class="updated"> <p>Utworzono stronę "Główna"</p></div>'; } // Argument dla strony Blog $blog_page_args = array('post_status' => 'publish', 'post_type' => 'page', 'post_name' => 'blog', 'page_template' => 'page-templates/blog.php', 'post_title' => 'Blog', 'post_content' => ''); if (get_page_by_title('Blog') == null) { wp_insert_post($blog_page_args); echo '<div class="updated"> <p>Utworzono stronę "Blog"</p></div>'; } // Argument dla strony Projekty $projects_page_args = array('post_status' => 'publish', 'post_type' => 'page', 'post_name' => 'projects', 'page_template' => 'page-templates/projects.php', 'post_title' => 'Projekty', 'post_content' => ''); if (get_page_by_title('Projekty') == null) { wp_insert_post($projects_page_args); echo '<div class="updated"> <p>Utworzono stronę "Projekty"</p></div>'; } // Argument dla strony Login $login_page_args = array('post_status' => 'publish', 'post_type' => 'page', 'post_name' => 'login', 'page_template' => 'page-templates/login.php', 'post_title' => 'Logowanie', 'post_content' => ''); if (get_page_by_title('Logowanie') == null) { wp_insert_post($login_page_args); echo '<div class="updated"> <p>Utworzono stronę "Logowanie"</p></div>'; } // Argument dla strony Członkowie $members_page_args = array('post_status' => 'publish', 'post_type' => 'page', 'post_name' => 'members', 'page_template' => 'page-templates/members.php', 'post_title' => 'Członkowie', 'post_content' => ''); if (get_page_by_title('Członkowie') == null) { wp_insert_post($members_page_args); echo '<div class="updated"> <p>Utworzono stronę "Członkowie"</p></div>'; } // Argument dla strony O nas $about_page_args = array('post_status' => 'publish', 'post_type' => 'page', 'post_name' => 'about', 'post_title' => 'O nas', 'post_content' => 'Jakiś tekst o nas'); if (get_page_by_title('O nas') == null) { wp_insert_post($about_page_args); echo '<div class="updated"> <p>Utworzono stronę "O nas"</p></div>'; } // Tworzymy menu i dodajemy do niego pozycje // if (!is_nav_menu('topbar_menu')) { $menu_id = wp_create_nav_menu('topbar_menu'); wp_update_nav_menu_item($menu_id, 0, array('menu-item-title' => 'Blog', 'menu-item-object' => 'page', 'menu-item-object-id' => get_page_by_path('blog')->ID, 'menu-item-type' => 'post_type', 'menu-item-status' => 'publish')); wp_update_nav_menu_item($menu_id, 0, array('menu-item-title' => 'Członkowie', 'menu-item-object' => 'page', 'menu-item-object-id' => get_page_by_path('members')->ID, 'menu-item-type' => 'post_type', 'menu-item-status' => 'publish')); wp_update_nav_menu_item($menu_id, 0, array('menu-item-title' => 'O nas', 'menu-item-object' => 'page', 'menu-item-object-id' => get_page_by_path('about')->ID, 'menu-item-type' => 'post_type', 'menu-item-status' => 'publish')); // Grab the theme locations and assign our newly-created menu // to the BuddyPress menu location. if (!has_nav_menu('topbar_menu')) { $locations = get_theme_mod('nav_menu_locations'); $locations['main_menu'] = $menu_id; set_theme_mod('nav_menu_locations', $locations); echo '<div class="updated"> <p>Utworzono menu</p></div>'; } } }
public function test_wp_get_nav_menu_items_with_taxonomy_term() { register_taxonomy('wptests_tax', 'post', array('hierarchical' => true)); $t = $this->factory->term->create(array('taxonomy' => 'wptests_tax')); $child_terms = $this->factory->term->create_many(2, array('taxonomy' => 'wptests_tax', 'parent' => $t)); $term_menu_item = wp_update_nav_menu_item($this->menu_id, 0, array('menu-item-type' => 'taxonomy', 'menu-item-object' => 'wptests_tax', 'menu-item-object-id' => $t, 'menu-item-status' => 'publish')); $term = get_term($t, 'wptests_tax'); $menu_items = wp_get_nav_menu_items($this->menu_id); $this->assertSame($term->name, $menu_items[0]->title); $this->assertEquals($t, $menu_items[0]->object_id); }
private function setMenuItem($menu_item) { $args = array('menu-item-db-id' => $menu_item->db_id, 'menu-item-object-id' => $menu_item->object_id, 'menu-item-object' => $menu_item->object, 'menu-item-position' => $this->counter, 'menu-item-type' => $menu_item->type, 'menu-item-title' => $menu_item->title, 'menu-item-url' => $menu_item->url, 'menu-item-description' => $menu_item->description, 'menu-item-attr-title' => $menu_item->attr_title, 'menu-item-target' => $menu_item->target, 'menu-item-classes' => implode(' ', $menu_item->classes), 'menu-item-xfn' => $menu_item->xfn, 'menu-item-status' => $menu_item->post_status); $parent_id = wp_update_nav_menu_item($this->createdMenu, 0, $args); $rel[$menu_item->db_id] = $parent_id; if ($menu_item->menu_item_parent) { $args['menu-item-parent-id'] = $rel[$menu_item->menu_item_parent]; $parent_id = wp_update_nav_menu_item($this->createdMenu, $parent_id, $args); } return !!$parent_id; }
/** * Register and create a default menu in CBOX. * * @param array $args Arguments to register the default menu: * 'menu_name' - The internal menu name we should give our new menu. * 'location' - The nav menu location we want our new menu to reside. * 'pages' - Associative array of pages. Sample looks like this: * array( * array( * 'title' => 'Home', * 'position' => 0, * 'url' => home_url( '/' ) // custom url * ), * array( * 'title' => 'Members', * 'position' => 10, * 'bp_directory' => 'members' // match bp component * ), * ) */ function cbox_theme_register_default_menu($args = array()) { global $blog_id; if (empty($args['menu_name']) || empty($args['location']) || empty($args['pages'])) { return false; } if (!is_array($args['pages'])) { return false; } // check BP reqs and if our custom default menu already exists if (function_exists('bp_core_get_directory_pages') && BP_ROOT_BLOG == $blog_id && !is_nav_menu($args['menu_name'])) { // menu doesn't exist, so create it $menu_id = wp_create_nav_menu($args['menu_name']); // get bp pages $bp_pages = bp_core_get_directory_pages(); // now, add the pages to our menu foreach ($args['pages'] as $page) { // default args $params = array('menu-item-status' => 'publish', 'menu-item-title' => $page['title'], 'menu-item-classes' => 'icon-' . !empty($page['bp_directory']) ? $page['bp_directory'] : sanitize_title($page['title']), 'menu-item-position' => $page['position']); // support custom menu type if (!empty($page['type'])) { $params['menu-item-type'] = $page['type']; } // support custom url if (!empty($page['url'])) { $params['menu-item-url'] = $page['url']; } // add additional args for bp directories if (!empty($page['bp_directory'])) { // bp directory page doesn't exist, so stop! if (!array_key_exists($page['bp_directory'], get_object_vars($bp_pages))) { continue; } // yep, add page as a nav item $params['menu-item-type'] = 'post_type'; $params['menu-item-object'] = 'page'; $params['menu-item-object-id'] = $bp_pages->{$page['bp_directory']}->id; } wp_update_nav_menu_item($menu_id, 0, $params); $params = array(); } // get location settings $locations = get_theme_mod('nav_menu_locations'); // is our menu location set yet? if (empty($locations[$args['location']])) { // nope, set it $locations[$args['location']] = $menu_id; // update theme mode set_theme_mod('nav_menu_locations', $locations); } return true; } }
/** * Register default menu. * * @since 1.0.0 */ function beans_do_register_default_menu() { // Stop here if a menu already exists. if (wp_get_nav_menus()) { return; } $name = __('Navigation', 'tm-beans'); // Set up default menu if it doesn't exists. if (!wp_get_nav_menu_object($name)) { wp_update_nav_menu_item(wp_create_nav_menu($name), 0, array('menu-item-title' => __('Home', 'tm-beans'), 'menu-item-classes' => 'home', 'menu-item-url' => home_url('/'), 'menu-item-status' => 'publish')); } }
function ready_ecommerce_setup() { global $wpdb; /* Language Support */ load_theme_textdomain('ready_ecommerce', get_template_directory() . '/languages'); $locale = get_locale(); $locale_file = get_template_directory() . "/languages/{$locale}.php"; if (is_readable($locale_file)) { require_once $locale_file; } /* Add default posts and comments RSS feed links to head */ add_theme_support('automatic-feed-links'); /* This theme uses wp_nav_menu() in two location.*/ register_nav_menus(array('primary' => __('Primary Menu', 'ready_ecommerce'), 'top' => __('Top "Drop-Down" Menu', 'ready_ecommerce'))); /* Create theme custom menu */ $name = 'Ready! Ecommerce Menu'; $menu = wp_get_nav_menu_object($name); if (!$menu) { $menu_id = wp_create_nav_menu($name); $options = get_option('nav_menu_options'); $options['auto_add'][] = $menu_id; update_option('nav_menu_options', $options); $itemData = array('menu-item-type' => 'custom', 'menu-item-url' => get_home_url('/'), 'menu-item-title' => 'Home'); wp_update_nav_menu_item($menu_id, 0, $itemData); // if Ready! Commerce plugin is already installed add the pages to menu require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; // Need for plugins_api } else { $menu_id = $menu->term_id; } /* Set Custom Menu */ if (!has_nav_menu('primary')) { $locations = get_theme_mod('nav_menu_locations'); $locations['primary'] = $menu_id; set_theme_mod('nav_menu_locations', $locations); } if (!has_nav_menu('top')) { $locations = get_theme_mod('nav_menu_locations'); $locations['top'] = $menu_id; set_theme_mod('nav_menu_locations', $locations); } /* Activate Social Links Module */ $social_links = new SocialLinks(); $social_links->social_links_install(); /* Add support for the Aside and Gallery Post Formats */ add_theme_support('post-formats', array('aside', 'image', 'gallery')); if (class_exists('frame')) { frame::_()->getModule('options')->getModel('')->put(array('code' => 'default_theme', 'value' => 'ready_ecommerce_theme')); } wp_update_term(1, 'category', array('name' => 'Shop', 'slug' => 'shop')); }
function free01_setup() { /***** Navigation & Menu *****/ $menus = array(__('Main menu', 'free01') => __('Main menu', 'free01')); foreach ($menus as $key => $value) { if (!is_nav_menu($key)) { wp_update_nav_menu_item(wp_create_nav_menu($key), 1); } } if (function_exists('register_nav_menus')) { register_nav_menus($menus); } remove_action('wp_head', '_admin_bar_bump_cb'); }
/** * @ticket 27113 */ function test_orphan_nav_menu_item() { // Create an orphan nav menu item $custom_item_id = wp_update_nav_menu_item(0, 0, array('menu-item-type' => 'custom', 'menu-item-title' => 'Wordpress.org', 'menu-item-link' => 'http://wordpress.org', 'menu-item-status' => 'publish')); // Confirm it saved properly $custom_item = wp_setup_nav_menu_item(get_post($custom_item_id)); $this->assertEquals('Wordpress.org', $custom_item->title); // Update the orphan with an associated nav menu wp_update_nav_menu_item($this->menu_id, $custom_item_id, array('menu-item-title' => 'WordPress.org')); $menu_items = wp_get_nav_menu_items($this->menu_id); $custom_item = wp_filter_object_list($menu_items, array('db_id' => $custom_item_id)); $custom_item = array_pop($custom_item); $this->assertEquals('WordPress.org', $custom_item->title); }
function test_nav_menu_items_filter() { $post_id = $this->factory->post->create(array('post_type' => 'page', 'post_status' => 'publish')); $post = get_post($post_id); $this->assertTrue($this->plugin()->set_link($post_id, 'http://example.com/')); $this->assertTrue($this->plugin()->set_link_new_tab($post_id)); // Need a user with sufficient permissions because wp_insert_post() is not low level enough — WTF? $user_id = $this->factory->user->create(array('role' => 'editor')); wp_set_current_user($user_id); $menu_id = wp_create_nav_menu('plt'); $this->assertInternalType('int', $menu_id, "Menu creation failed"); $item_id = wp_update_nav_menu_item($menu_id, 0, array('menu-item-object-id' => $post_id, 'menu-item-object' => $post->post_type, 'menu-item-type' => 'post_type', 'menu-item-status' => 'publish')); $wp_nav_menu = wp_nav_menu(array('echo' => false, 'menu' => $menu_id, 'fallback_cb' => false)); $this->assertInternalType('string', $wp_nav_menu, 'Menu is empty'); $this->assertContains('target="_blank"', $wp_nav_menu); }
function wanderlist_add_menu_item($post_id) { // First, let's get a menu. We'll make a new one if we don't already have any, // but otherwise we'll just use the most logical-seeming menu. $locations = get_nav_menu_locations(); if (!$locations) { $menu_id = wp_create_nav_menu('Primary Menu'); } elseif ($locations['primary']) { $menu_id = $locations['primary']; } else { $menu_id = $locations[0]; } // Add page to our selected menu $new_menu_item_id = wp_update_nav_menu_item($menu_id, 0, array('menu-item-title' => esc_html__('Travels', 'wanderlist'), 'menu-item-object' => 'page', 'menu-item-type' => 'post_type', 'menu-item-object-id' => $post_id, 'menu-item-status' => 'publish')); // Save the id in the database, so we can delete it on de-activation update_option('wanderlist_menu_item', $new_menu_item_id); }
/** * Sync Link Menu Item * @since 1.1.4 */ private function syncMenuItem($menu_parent, $menu_item_id) { $type = $this->post->nav_type ? $this->post->nav_type : 'custom'; $object = $this->post->nav_object ? $this->post->nav_object : 'custom'; $object_id = $this->post->nav_object_id ? $this->post->nav_object_id : null; $url = $type == 'custom' ? esc_url($this->post->content) : null; $xfn = $this->post->id; // Compatibility for 1.4.1 - Reset Page links if ($this->post->type == 'page') { $type = 'post_type'; $object = 'page'; $object_id = $this->post->id; $xfn = 'page'; } $args = array('menu-item-title' => $this->post->title, 'menu-item-position' => $this->count, 'menu-item-url' => $url, 'menu-item-attr-title' => $this->post->nav_title_attr, 'menu-item-status' => 'publish', 'menu-item-classes' => $this->post->nav_css, 'menu-item-type' => $type, 'menu-item-object' => $object, 'menu-item-object-id' => $object_id, 'menu-item-parent-id' => $menu_parent, 'menu-item-xfn' => $xfn, 'menu-item-target' => $this->post->link_target); $menu = wp_update_nav_menu_item($this->id, $menu_item_id, $args); return $menu; }
/** * When publishing a new child page, add it to the appropriate custom menu. */ function on_publish_page($post_id) { // Theme supports custom menus? if (!current_theme_supports('menus')) { return; } // Published page has parent? $post = get_post($post_id); if (!$post->post_parent) { return; } // Get menus with auto_add enabled $auto_add = get_option('nav_menu_options'); if (empty($auto_add) || !is_array($auto_add) || !isset($auto_add['auto_add'])) { return; } $auto_add = $auto_add['auto_add']; if (empty($auto_add) || !is_array($auto_add)) { return; } // Loop through the menus to find page parent foreach ($auto_add as $menu_id) { $menu_parent = NULL; $menu_items = wp_get_nav_menu_items($menu_id, array('post_status' => 'publish,draft')); if (!is_array($menu_items)) { continue; } foreach ($menu_items as $menu_item) { // Item already in menu? if ($menu_item->object_id == $post->ID) { continue 2; } if ($menu_item->object_id == $post->post_parent) { $menu_parent = $menu_item; } } // Add new item if ($menu_parent) { wp_update_nav_menu_item($menu_id, 0, array('menu-item-object-id' => $post->ID, 'menu-item-object' => $post->post_type, 'menu-item-parent-id' => $menu_parent->ID, 'menu-item-type' => 'post_type', 'menu-item-status' => 'publish')); } } }
/** * Enable or disable menu entry to contact page. */ function campanha_toggle_contact_menu_entry($oldValue, $newValue) { $menu = wp_get_nav_menu_object('main'); $items = wp_get_nav_menu_items('main'); $menuItem = null; if ($menu) { foreach ($items as $item) { if ($item->url == home_url('/contato')) { $menuItem = $item; } } if ($newValue == 'on' && !$menuItem) { wp_update_nav_menu_item($menu->term_taxonomy_id, 0, array('menu-item-title' => 'Contato', 'menu-item-url' => home_url('/contato'), 'menu-item-status' => 'publish')); } else { if (empty($newValue) && $menuItem) { wp_delete_post($menuItem->ID, true); } } } }
function rksnwp_add_to_menu($name, $postID) { $url = get_permalink($postID); $theMenu = wp_get_nav_menu_object("Sentinote Menu"); $menu_id = $theMenu->term_id; // Does the menu item exist? $menu_exists = false; foreach (wp_get_nav_menu_items($menu_id) as $menu_item) { if (__($name) == __($menu_item->post_title)) { $menu_exists = true; } } if (!$menu_exists) { $thisMenuItem = wp_update_nav_menu_item($menu_id, 0, array('menu-item-title' => __($name), 'menu-item-classes' => 'menu_item', 'menu-item-url' => $url, 'menu-item-status' => 'publish')); // Wordpress limitation forces hacky relationship insert global $wpdb; if (!get_post_type($thisMenuItem)) { $wpdb->insert($wpdb->term_relationships, array("object_id" => $thisMenuItem, "term_taxonomy_id" => $menu_id), array("%d", "%d")); } } }
/** * Theme activation * * ## OPTIONS * * [<theme>] * : The theme name to activate. Defaults to 'sage'. * * [--show-on-front=<page-type>] * : What to show on the front page. Options are: 'posts', 'page'. Default is 'page'. * * [--permalink-structure=<permalink-string>] * : Permalink structure. Default is '/%postname%/'. * * [--skip-navigation] * : Skip creating default Primary Navigation. * * ## EXAMPLES * * wp theme activation * wp theme activation --show-on-front=page --permalink-structure='/%year%/%postname%/' --skip-navigation * * @subcommand activation * @alias roots-activate */ public function activation($args = [], $options = []) { list($theme) = $args + ['sage']; $defaults = ['permalink-structure' => '/%postname%/', 'show-on-front' => 'page', 'skip-navigation' => false]; $options = wp_parse_args($options, $defaults); $options['skip-navigation'] = $options['skip-navigation'] || !!wp_get_nav_menu_object('Primary Navigation'); \WP_CLI::log('Activating theme and setting options'); $home_page_options = ['post_content' => 'Lorem Ipsum', 'post_status' => 'publish', 'post_title' => 'Home', 'post_type' => 'page']; parent::activate([$theme]); if ($home_page_id = wp_insert_post($home_page_options, false)) { \WP_CLI::run_command(['option', 'update', 'show_on_front', $options['show-on-front']]); \WP_CLI::run_command(['option', 'update', 'page_on_front', $home_page_id]); } if (!$options['skip-navigation'] && ($menu_id = wp_create_nav_menu('Primary Navigation'))) { $home_page_id && wp_update_nav_menu_item($menu_id, 0, ['menu-item-title' => $home_page_options['post_title'], 'menu-item-object' => $home_page_options['post_type'], 'menu-item-object-id' => $home_page_id, 'menu-item-type' => 'post_type', 'menu-item-status' => 'publish']); set_theme_mod('nav_menu_locations', ['primary_navigation' => $menu_id]); \WP_CLI::success('Primary Navigation created.'); } \WP_CLI::run_command(['rewrite', 'structure', $options['permalink-structure']]); \WP_CLI::run_command(['rewrite', 'flush']); \WP_CLI::success('Theme activated'); }
public static function create_menu($menu_name, $menu_items) { if (self::menu_exists($menu_name)) { return false; } // TODO log the error $menu_id = wp_create_nav_menu($menu_name); if ($menu_id <= 0) { return false; } // TODO log the error foreach ($menu_items as $menu_item) { $item = self::create_menu_item_obj($menu_item); $item_id = wp_update_nav_menu_item($menu_id, 0, $item); if ($item_id <= 0) { continue; } // TODO log the error if (isset($menu_item['data']) && is_array($menu_item['data'])) { foreach ($menu_item['data'] as $meta_key => $meta_value) { update_post_meta($item_id, '_menu_item_' . $meta_key, $meta_value); } } if (!array_key_exists('children', $menu_item)) { continue; } // create child items foreach ($menu_item['children'] as $child_item) { $subitem = self::create_menu_item_obj($child_item, $item_id); $subitem_id = wp_update_nav_menu_item($menu_id, 0, $subitem); if ($subitem_id <= 0) { continue; } // TODO log the error } } return true; }
function install_default_white_bar_menu() { $this->generate_menu_list(); $this->MENU_ID = wp_create_nav_menu(self::DISPLAY_NAME); // wp_create_nav_menu returns a WP_Error if the menu already exists; if (is_wp_error($this->MENU_ID)) { return; } // Each site in the network will have a different menu item ID for each thing. Make the first menu and save its id // then set that ID as the menu-item-parent-id for each child. Then save each child. foreach ($this->menu_items as $menu_name => $menu_attributes) { $children = $menu_attributes['children']; unset($menu_attributes['children']); $parent_id = wp_update_nav_menu_item($this->MENU_ID, $menu_item_db_id = 0, $menu_attributes); if ($children) { foreach ($children as $submenu) { $submenu['menu-item-parent-id'] = $parent_id; wp_update_nav_menu_item($this->MENU_ID, $menu_item_db_id = 0, $submenu); } } } $this->set_uw_menu_location(); }
function ac_activation_setup_menus() { // Create the menu $roots_nav_theme_mod = false; $primary_nav = wp_get_nav_menu_object('Primary Navigation'); if (!$primary_nav) { $primary_nav_id = wp_create_nav_menu('Primary Navigation', array('slug' => 'primary_navigation')); $roots_nav_theme_mod['primary_navigation'] = $primary_nav_id; } else { $roots_nav_theme_mod['primary_navigation'] = $primary_nav->term_id; } if ($roots_nav_theme_mod) { set_theme_mod('nav_menu_locations', $roots_nav_theme_mod); } // Add the pages to the menu $primary_nav = wp_get_nav_menu_object('Primary Navigation'); $primary_nav_term_id = (int) $primary_nav->term_id; $menu_items = wp_get_nav_menu_items($primary_nav_term_id); if (!$menu_items || empty($menu_items)) { $pages = get_pages(); foreach ($pages as $page) { $item = array('menu-item-object-id' => $page->ID, 'menu-item-object' => 'page', 'menu-item-type' => 'post_type', 'menu-item-status' => 'publish'); wp_update_nav_menu_item($primary_nav_term_id, 0, $item); } } }
function yb_page_menus_save_post($post_id, $post_object) { if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } if (!isset($_POST['meta_box_nonce']) || !wp_verify_nonce($_POST['meta_box_nonce'], 'yb_page_menus_nonce')) { return; } /* If this is just a revision, don't save in menu */ if (wp_is_post_revision($post_id)) { return; } /* save the data with update_post_meta */ $all_menus = wp_get_nav_menus(); /* save the data with update_post_meta */ foreach ($all_menus as $menu) { $menuID = (int) $menu->term_id; if (isset($_POST['nav-menu-group']) && in_array($menu->name, $_POST['nav-menu-group'])) { if (!checkMenuForPage($menuID, $post_id)) { $itemData = array('menu-item-object-id' => $post_id, 'menu-item-title' => __(get_the_title($post_id)), 'menu-item-url' => get_permalink($post_id), 'menu-item-object' => 'page', 'menu-item-position' => $post_object->menu_order, 'menu-item-type' => 'post_type', 'menu-item-status' => 'publish'); remove_action('save_post', 'yb_page_menus_save_post', 13, 2); wp_update_nav_menu_item($menuID, 0, $itemData); add_action('save_post', 'yb_page_menus_save_post', 13, 2); } } else { $isInMenu = checkMenuForPage($menuID, $post_id); if ($isInMenu) { wp_delete_post($isInMenu); } } } }