/** * 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); } } }
/** * * 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 ] )); } */ }
/** * 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); } } }
function register_navmenus() { register_nav_menus(array('Header' => __('Header Navigation'))); // Check if Header menu exists and make it if not if (!is_nav_menu('Header')) { $menu_id = wp_create_nav_menu('Header'); } }
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>'; } } }
/** * 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; } }
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'); }
/** * Ajax handler for deleting a menu. * * @since Menu Customizer 0.0. */ function menu_customizer_delete_menu_ajax() { check_ajax_referer('customize-menus', 'customize-nav-menu-nonce'); if (!current_user_can('edit_theme_options')) { wp_die(-1); } $menu_id = absint($_POST['menu_id']); if (is_nav_menu($menu_id)) { $deletion = wp_delete_nav_menu($menu_id); if (is_wp_error($deletion)) { echo $deletion->message(); } } else { echo __('Error: invalid menu to delete.'); } wp_die(); }
/** * Print a menu only if that menu exists and has content. * * @param string $menu_name Name of the wp_nav_menu. * @param string $menu_title Title to go with menu */ function print_menu_if_exists($menu_name, $menu_title = '') { /* Get reference to menu without printing the menu. * This reference will point to $menu_name if it exists and to wp_page_menu * if it doesn't. */ $menu = wp_nav_menu(array('echo' => false, 'menu' => $menu_name, 'fallback_cb' => '__return_false')); /* * Make sure menu both has content and is the right menu with name * of [menu_name]. Otherwise, it could be pointing to wp_page_menu. * */ if (!empty($menu) && is_nav_menu($menu_name)) { $defaults = array('menu' => $menu_name, 'container' => false, 'menu_class' => 'resource-links'); echo '<div class="section--fp__resources">'; if (!empty($menu_title)) { echo '<h5 class="resources__title">' . $menu_title . '</h5>'; } wp_nav_menu($defaults); echo '</div>'; } }
protected function import_menu($menu) { $_menu = $menu['menu']; if (is_nav_menu($menu['menu']['slug'])) { $local_menu = wp_get_nav_menu_object($menu['menu']['slug']); $menu_id = $local_menu->term_id; $update = true; if (!empty($local_menu)) { $local_menu = new cfd_menu($menu['menu']['slug']); } } else { $menu_id = 0; $update = false; } $insert_menu_id = wp_update_nav_menu_object($menu_id, array('menu-name' => $menu['menu']['name'], 'description' => $menu['menu']['description'], 'slug' => $menu['menu']['slug'])); if (is_wp_error($insert_menu_id)) { $this->add_import_message('menus', '__error__', sprintf(__('Menu import failed for menu "%s". Error: ', 'cf-deploy'), $menu['menu']['name']) . $insert_menu_id->get_error_message()); return false; } // nuke existing menu items, trust me, its easier this way if ($update) { // Taken directly from wp_delete_nav_menu, wp-includes/nav-menu.php $menu_objects = get_objects_in_term($insert_menu_id, 'nav_menu'); if (!empty($menu_objects)) { foreach ($menu_objects as $item) { wp_delete_post($item); } } } // handle menu items if (!empty($menu['items'])) { $this->menu_item_parent_map = array(); $processed_items = 0; foreach ($menu['items'] as $item) { if ($this->import_menu_item($item, $insert_menu_id)) { $processed_items++; } } } // log rollback state $item_change['menus'][$menu['menu']['slug']] = 'new'; if (!empty($local_menu)) { $item_change['menus'][$menu['menu']['slug']] = $local_menu->get_data_for_transit(); } $this->log_item_change($item_change); return $processed_items == count($menu['items']); }
function yb_register_menus() { global $ybwp_data; $util_nav = $ybwp_data['opt-checkbox-utilnav']; $wireframes = $ybwp_data['opt-checkbox-wireframes']; add_theme_support('menus'); $menus = array('Main Navigation' => array('slug' => 'main-nav', 'menu_items' => array('Home' => array('url' => site_url(), 'slug' => 'home'))), 'Footer Navigation' => array('slug' => 'footer-nav', 'menu_items' => array('Home' => array('url' => site_url(), 'slug' => 'home')))); /* optional utility navigation */ if (!empty($util_nav)) { $menus['Utility Navigation'] = array('slug' => 'util-nav', 'menu_items' => array()); } /* the menu for the wireframes pages. only shows in dev environments */ if ((WP_ENV == 'development' || WP_ENV == 'staging') && !empty($wireframes)) { $menus['Wireframes Navigation'] = array('slug' => 'wireframes-nav', 'menu_items' => array('Home' => array('url' => site_url(), 'slug' => 'home'))); } /* create menus */ foreach ($menus as $menu_title => $menu_var) { /* register new nav menu */ register_nav_menu($menu_var['slug'], $menu_title); if (!is_nav_menu($menu_title)) { $menu_id = wp_create_nav_menu($menu_title); /* populate menu items */ foreach ($menu_var['menu_items'] as $menu_item_name => $menu_item_args) { $page_obj = get_page_by_path($menu_item_args['slug']); $item = array('menu-item-object' => 'page', 'menu-item-type' => 'post_type', 'menu-item-object-id' => $page_obj->ID, 'menu-item-url' => $menu_item_args['url'], 'menu-item-title' => $menu_item_name, 'menu-item-status' => 'publish', 'menu-item-position' => $page_obj->menu_order); wp_update_nav_menu_item($menu_id, 0, $item); } $locations = get_theme_mod('nav_menu_locations'); $locations[$menu_var['slug']] = $menu_id; set_theme_mod('nav_menu_locations', $locations); } } }
/** * PHPDOC * * @param array $items An array of menu item post objects. * @param object $menu The menu object. * @param array $args An array of arguments used to retrieve menu item objects. * * @return array PHPDOC * * @since PHPDOC */ public function show_the_appropriate_menu($items, $menu, $args) { remove_action('wp_get_nav_menu_items', array(&$this, 'show_the_appropriate_menu'), 10, 3); $alt_menu = $this->get_menu_alternative($menu->term_id); if (is_nav_menu($alt_menu)) { $items = wp_get_nav_menu_items($alt_menu, $args); } add_action('wp_get_nav_menu_items', array(&$this, 'show_the_appropriate_menu'), 10, 3); return $items; }
private function Build($Options = null) { if ($Options !== null) { $Options = wp_parse_args($Options, $this->Options); } else { $Options = $this->Options; } $Options = wp_parse_args($Options, $this->DefaultOptions); $Options = apply_filters('gk_submenu_args', $Options); extract($Options); $depth = (int) $depth; if (isset($child_of) && $child_of) { $submenu = $child_of; } if (isset($start_from) && $start_from) { $submenu = $start_from; } // if no menu specified, gets the lowest ID menu if (!$menu || !is_nav_menu($menu)) { $menus = wp_get_nav_menus(); foreach ($menus as $menu_maybe) { if ($menu_items = wp_get_nav_menu_items($menu_maybe->term_id)) { $menu = $menu_maybe->term_id; break; } } } // still can't find a menu, we exit if (!$menu || !is_nav_menu($menu)) { return; } /* WPML support */ if (function_exists('icl_object_id')) { global $sitepress; /* not default language */ if (ICL_LANGUAGE_CODE !== $sitepress->get_default_language()) { $translated_menu_id = icl_object_id($menu, 'nav_menu'); $menu = $translated_menu_id ? $translated_menu_id : $menu; } } /* */ $menu_items = wp_get_nav_menu_items($menu); if (is_tax() || is_category()) { $_type = 'taxonomy'; } else { $_type = 'post_type'; } // current page is top level element if ($submenu === 'current') { global $wp_query; $submenu = $this->get_associated_nav_menu_item($wp_query->get_queried_object_id(), $menu_items, $_type); } else { if ($submenu === 'top') { global $post, $wp_query; if ((is_a($post, 'stdClass') || is_a($post, 'WP_Post')) && (int) $post->ID) { if ($submenu = $this->get_top_ancestor($wp_query->get_queried_object_id(), $menu_items, $_type)) { $submenu = $submenu->ID; } } } } // a submenu has been specified if ($submenu !== 0) { if (!$submenu) { return; } $submenu_item = $submenu; if (!is_object($submenu)) { $submenu_item = $this->get_menu_item($submenu, $menu_items); if (!$submenu_item) { $submenu_item = $this->get_associated_nav_menu_item($submenu, $menu_items, $type); } if (!$submenu_item) { return; } } if (!$this->menu_item_has_child($submenu_item->ID, $menu_items)) { return; } $submenu_id = $submenu_item->ID; $this->top_level_item = $submenu_item; global $GKSM_ID, $GKSM_MENUID; $menu_object = wp_get_nav_menu_object($menu); $GKSM_ID = $submenu_id; $GKSM_MENUID = $menu_object->term_id; } if (!strpos($container_class, ' ')) { $slug = ''; if (!empty($GLOBALS['wp_query']->get_queried_object()->post_name)) { $slug = $GLOBALS['wp_query']->get_queried_object()->post_name; } else { if (!empty($GLOBALS['wp_query']->get_queried_object()->{$slug})) { $slug = $GLOBALS['wp_query']->get_queried_object()->slug; } } $container_class .= " {$container_class}-" . $slug; } // gets the nav menu $args = array('container_class' => $container_class, 'menu' => $menu, 'show_description' => $show_description, 'depth' => $depth, 'is_gk_submenu' => $is_gk_submenu); if (empty($args['walker'])) { $args['walker'] = new Gecka_Walker_Nav_Menu(); } $out = wp_nav_menu(wp_parse_args($args, $Options)); // reset global variables $GKSM_ID = $GKSM_MENUID = null; return $out; }
<?php // The header image // Check if this is a post or page, if it has a thumbnail, and if it's a big one if (is_singular() && current_theme_supports('post-thumbnails') && has_post_thumbnail($post->ID) && ($image = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'post-thumbnail')) && $image[1] >= HEADER_IMAGE_WIDTH) { // Houston, we have a new header image! echo get_the_post_thumbnail($post->ID, array(1102, 350), array('class' => 'headerimage')); } elseif (get_header_image()) { ?> <img src="<?php header_image(); ?> " class="headerimage" width="<?php echo HEADER_IMAGE_WIDTH; ?> " height="<?php echo HEADER_IMAGE_HEIGHT; ?> " alt="" /><!-- end headerimage --> <?php } ?> <div class="clear"></div> <nav id="subnav"> <?php if (is_nav_menu('Sub Menu')) { wp_nav_menu(array('menu' => 'Sub Menu')); } ?> </nav><!-- end subnav --> </header><!-- end header -->
<?php /*** Top navigation ***/ function register_menu() { register_nav_menu('Header', __('Header')); } add_action('init', 'register_menu'); if (!is_nav_menu('Header')) { $menu_id = wp_create_nav_menu('Header'); wp_update_nav_menu_item($menu_id, 1); } class extended_walker extends Walker_Nav_Menu { function display_element($element, &$children_elements, $max_depth, $depth = 0, $args, &$output) { if (!$element) { return; } $id_field = $this->db_fields['id']; //display this element if (is_array($args[0])) { $args[0]['has_children'] = !empty($children_elements[$element->{$id_field}]); } //Adds the 'parent' class to the current item if it has children if (!empty($children_elements[$element->{$id_field}])) { array_push($element->classes, 'parent'); } $cb_args = array_merge(array(&$output, $element, $depth), $args); call_user_func_array(array(&$this, 'start_el'), $cb_args); $id = $element->{$id_field};
} add_action('admin_bar_menu', 'unspoken_admin_bar', 1000); // Theme Options require_once TEMPLATEPATH . '/core/theme_options.php'; // Advanced post options require_once TEMPLATEPATH . '/core/advanced_post_options.php'; // Widgets require_once TEMPLATEPATH . '/core/widgets.php'; // Shortcodes require_once TEMPLATEPATH . '/core/shortcodes.php'; // Video require_once TEMPLATEPATH . '/lib/AutoEmbed.php'; /***** Navigation & Menu *****/ $menus = array(__('Top menu', 'unspoken') => __('Top menu', 'unspoken'), __('Navigation', 'unspoken') => __('Navigation', 'unspoken'), __('Navigation footer', 'unspoken') => __('Navigation footer', 'unspoken'), __('Footer left linkset', 'unspoken') => __('Footer left linkset', 'unspoken'), __('Footer right linkset', 'unspoken') => __('Footer right linkset', 'unspoken')); foreach ($menus as $key => $value) { if (!is_nav_menu($key)) { wp_update_nav_menu_item(wp_create_nav_menu($key), 1); } } class extended_walker extends Walker_Nav_Menu { function display_element($element, &$children_elements, $max_depth, $depth = 0, $args, &$output) { if (!$element) { return; } $id_field = $this->db_fields['id']; //display this element if (is_array($args[0])) { $args[0]['has_children'] = !empty($children_elements[$element->{$id_field}]); }
/** * Returns the menu formatted to edit. * * @since 3.0.0 * * @param int $menu_id Optional. The ID of the menu to format. Default 0. * @return string|WP_Error $output The menu formatted to edit or error object on failure. */ function wp_get_nav_menu_to_edit($menu_id = 0) { $menu = wp_get_nav_menu_object($menu_id); // If the menu exists, get its items. if (is_nav_menu($menu)) { $menu_items = wp_get_nav_menu_items($menu->term_id, array('post_status' => 'any')); $result = '<div id="menu-instructions" class="post-body-plain'; $result .= !empty($menu_items) ? ' menu-instructions-inactive">' : '">'; $result .= '<p>' . __('Add menu items from the column on the left.') . '</p>'; $result .= '</div>'; if (empty($menu_items)) { return $result . ' <ul class="menu" id="menu-to-edit"> </ul>'; } /** * Filter the Walker class used when adding nav menu items. * * @since 3.0.0 * * @param string $class The walker class to use. Default 'Walker_Nav_Menu_Edit'. * @param int $menu_id ID of the menu being rendered. */ $walker_class_name = apply_filters('wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', $menu_id); if (class_exists($walker_class_name)) { $walker = new $walker_class_name(); } else { return new WP_Error('menu_walker_not_exist', sprintf(__('The Walker class named <strong>%s</strong> does not exist.'), $walker_class_name)); } $some_pending_menu_items = $some_invalid_menu_items = false; foreach ((array) $menu_items as $menu_item) { if (isset($menu_item->post_status) && 'draft' == $menu_item->post_status) { $some_pending_menu_items = true; } if (!empty($menu_item->_invalid)) { $some_invalid_menu_items = true; } } if ($some_pending_menu_items) { $result .= '<div class="updated inline"><p>' . __('Click Save Menu to make pending menu items public.') . '</p></div>'; } if ($some_invalid_menu_items) { $result .= '<div class="error inline"><p>' . __('There are some invalid menu items. Please check or delete them.') . '</p></div>'; } $result .= '<ul class="menu" id="menu-to-edit"> '; $result .= walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $menu_items), 0, (object) array('walker' => $walker)); $result .= ' </ul> '; return $result; } elseif (is_wp_error($menu)) { return $menu; } }
/** * Returns an array of immediate child menu items for the current item * * @since 1.5 * @return array */ private function get_second_level_menu_items() { $items = array(); // check we're using a valid menu ID if (!is_nav_menu($this->menu_id)) { return $items; } $menu = wp_get_nav_menu_items($this->menu_id); if (count($menu)) { foreach ($menu as $item) { // find the child menu items if ($item->menu_item_parent == $this->menu_item_id) { $saved_settings = array_filter((array) get_post_meta($item->ID, '_megamenu', true)); $settings = array_merge(Mega_Menu_Nav_Menus::get_menu_item_defaults(), $saved_settings); $items[] = array('id' => $item->ID, 'title' => $item->title, 'mega_columns' => $settings['mega_menu_columns']); } } } return $items; }
/** * Add pages to navigation menu. * * Add pages only to an existing nav menu. No new menu is created or any theme locations set. * * @since 0.1.0 */ public static function add_pages_to_nav_menu($pages, $menu_name = 'Main Menu', $insert_from = 0) { /* Check if menu exists. */ if (is_nav_menu($menu_name)) { /* Get menu ID. */ $menu = wp_get_nav_menu_object($menu_name); $menuID = (int) $menu->term_id; /* Get existing menu items. */ $menu_items = wp_get_nav_menu_items($menu_name); /* Add a menu item for each page created earlier. */ foreach ($pages as $page) { /* An 'add page' flag. */ $add_page = true; /* Check that a page with the same title doesn't already exist in the menu. */ foreach ($menu_items as $menu_item) { if ($menu_item->title == $page['title']) { $add_page = false; break; /* No point in checking the other menu items for this title. */ } } if (!$add_page) { continue; } /* Skip to the next page to be added. */ $new_page = get_page_by_title($page['title']); $menu1 = array('menu-item-object-id' => $new_page->ID, 'menu-item-parent-id' => 0, 'menu-item-position' => $insert_from, 'menu-item-object' => 'page', 'menu-item-type' => 'post_type', 'menu-item-status' => 'publish', 'menu-item-title' => $new_page->post_title); wp_update_nav_menu_item($menuID, 0, $menu1); } } }
function kleo_woo_set_custom_menu($args = '') { $shop_id = wc_get_page_id('shop'); if (is_shop()) { $menuslug = get_cfield('page_menu', $shop_id); if (!empty($menuslug) && $menuslug != 'default' && is_nav_menu($menuslug)) { $args['menu'] = $menuslug; } } return $args; }
function _render($fields) { $data = $fields['data']; if (is_numeric($data['type'])) { if (function_exists('is_nav_menu') && is_nav_menu($data['type'])) { $menu = wp_get_nav_menu_object($data['type']); wp_nav_menu(array('menu' => $data['type'], 'container_class' => "menu-{$menu->slug}-container {$fields['class_prefix']}-navigation-menu-wrapper")); } } else { echo "<div class='{$fields['class_prefix']}-navigation-menu-wrapper'>\n"; echo "<ul class='menu'>\n"; if ('pages' === $data['type']) { $include_pages_setting = builder_get_theme_setting('include_pages'); if (!empty($include_pages_setting)) { if (in_array('home', (array) $include_pages_setting)) { $classes = 'home'; if (is_front_page()) { $classes .= ' current_page_item'; } $link = get_option('home'); $link = ITUtility::fix_url($link); echo "<li class='{$classes}'><a href='{$link}'>" . __('Home', 'it-l10n-Builder-Cohen') . "</a></li>\n"; } if (in_array('site_name', (array) $include_pages_setting)) { $classs = 'site-name'; if (is_front_page()) { $classes .= ' current_page_item'; } $link = get_option('home'); $link = ITUtility::fix_url($link); $link_text = get_bloginfo('name'); echo "<li class='{$classes}'><a href='{$link}'>{$link_text}</a></li>\n"; } $include_page_ids = array(); foreach ((array) $include_pages_setting as $include_page_id) { if (is_numeric($include_page_id)) { $include_page_ids[] = $include_page_id; } } $exclude_page_ids = apply_filters('wp_list_pages_excludes', array()); $include_page_ids = array_diff((array) $include_page_ids, (array) $exclude_page_ids); if (!empty($include_page_ids)) { $include = implode(',', (array) $include_page_ids); $my_pages = "title_li=&depth=0&include={$include}"; wp_list_pages($my_pages); } } } else { if ('categories' === $data['type']) { $include_cats_setting = builder_get_theme_setting('include_cats'); if (!empty($include_cats_setting)) { $include = implode(',', (array) $include_cats_setting); $my_cats = "title_li=&depth=0&include={$include}"; wp_list_categories($my_cats); } } else { wp_list_pages('title_li='); } } echo "</ul>\n</div>\n"; } }
/** * Add necessary admin body classes to identify auto menu page. * * @since 1.0.0 * * @param array $class Body classes. * * @return array Updated body classes. */ public function admin_body_class($class) { // Don't do anything unless on the menu page. $current_screen = get_current_screen(); if ('nav-menus' != $current_screen->base) { return $class; } // Explode class into array for easier handling. $class = explode(' ', $class); /** * Get ID of current menu. * * Uses code from core WordPress nav menus functionality. * * @see wp-admin/nav-menus.php */ $nav_menu_selected_id = isset($_REQUEST['menu']) ? (int) $_REQUEST['menu'] : 0; // Get all nav menus. $nav_menus = wp_get_nav_menus(); $menu_count = count($nav_menus); // Are we on the add new screen? $add_new_screen = isset($_GET['menu']) && 0 == $_GET['menu'] ? true : false; $recently_edited = absint(get_user_option('nav_menu_recently_edited')); if (empty($recently_edited) && is_nav_menu($nav_menu_selected_id)) { $recently_edited = $nav_menu_selected_id; } // Use $recently_edited if none are selected. if (empty($nav_menu_selected_id) && !isset($_GET['menu']) && is_nav_menu($recently_edited)) { $nav_menu_selected_id = $recently_edited; } // On deletion of menu, if another menu exists, show it. if (!$add_new_screen && 0 < $menu_count && isset($_GET['action']) && 'delete' == $_GET['action']) { $nav_menu_selected_id = $nav_menus[0]->term_id; } // Add .auto-menu-active if user is viewing the auto menu in the admin. $auto_menu_id = $this->get_auto_menu_id(); if ($nav_menu_selected_id == $auto_menu_id) { $class[] = 'auto-menu-active'; } return implode(' ', $class); }
function _rs_determine_selected_menu() { $nav_menus = wp_get_nav_menus(array('orderby' => 'name')); // Get recently edited nav menu $recently_edited = (int) get_user_option('nav_menu_recently_edited'); if (awp_ver('3.6-dev')) { $menu_count = count($nav_menus); // Are we on the add new screen? $add_new_screen = isset($_GET['menu']) && 0 == $_GET['menu'] ? true : false; $locations_screen = isset($_GET['action']) && 'locations' == $_GET['action'] ? true : false; // If we have one theme location, and zero menus, we take them right into editing their first menu $page_count = wp_count_posts('page'); $one_theme_location_no_menus = 1 == count(get_registered_nav_menus()) && !$add_new_screen && empty($nav_menus) && !empty($page_count->publish) ? true : false; if (empty($recently_edited) && is_nav_menu($nav_menu_selected_id)) { $recently_edited = $nav_menu_selected_id; } // Use $recently_edited if none are selected if (empty($nav_menu_selected_id) && !isset($_GET['menu']) && is_nav_menu($recently_edited)) { $nav_menu_selected_id = $recently_edited; } // On deletion of menu, if another menu exists, show it if (!$add_new_screen && 0 < $menu_count && isset($_GET['action']) && 'delete' == $_GET['action']) { $nav_menu_selected_id = $nav_menus[0]->term_id; } // Set $nav_menu_selected_id to 0 if no menus if ($one_theme_location_no_menus) { $nav_menu_selected_id = 0; } elseif (empty($nav_menu_selected_id) && !empty($nav_menus) && !$add_new_screen) { // if we have no selection yet, and we have menus, set to the first one in the list $nav_menu_selected_id = $nav_menus[0]->term_id; } } else { $nav_menu_selected_id = isset($_REQUEST['menu']) ? (int) $_REQUEST['menu'] : 0; // If there was no recently edited menu, and $nav_menu_selected_id is a nav menu, update recently edited menu. if (!$recently_edited && is_nav_menu($nav_menu_selected_id)) { $recently_edited = $nav_menu_selected_id; // Else if $nav_menu_selected_id is not a menu and not requesting that we create a new menu, but $recently_edited is a menu, grab that one. } elseif (0 == $nav_menu_selected_id && !isset($_REQUEST['menu']) && is_nav_menu($recently_edited)) { $nav_menu_selected_id = $recently_edited; // Else try to grab the first menu from the menus list } elseif (0 == $nav_menu_selected_id && !isset($_REQUEST['menu']) && !empty($nav_menus)) { $nav_menu_selected_id = $nav_menus[0]->term_id; } } return $nav_menu_selected_id; }
private function make_my_page($_p) { //global $wpdb; if (!isset($_p['post_name'])) { $_p['post_name'] = 'error-page'; } if (!isset($_p['post_title'])) { $_p['post_title'] = 'Error page'; } if (!isset($_p['post_content'])) { $_p['post_content'] = 'Please contact Scoutnet'; } unset($this->pages[$_p['post_name']]); update_option('sn_scoutnet_pages', $this->pages); // the slug... //delete_option("sn_page_{$key}_name"); //add_option("sn_page_{$key}_name", $key, '', 'yes'); // the id... //delete_option("sn_page_{$key}_id"); //delete_option($this->pages[$_p['post_name']]['id']); $this->pages[$_p['post_name']]['id'] = 0; $this->pages[$_p['post_name']]['title'] = $_p['post_title']; update_option('sn_scoutnet_pages', $this->pages); //add_option($this->pages[$_p['post_name']]['id'], '0', '', 'yes'); $mypage = get_page_by_title($_p['post_title']); if (!$mypage) { // Default values $_p['post_status'] = 'publish'; $_p['post_type'] = 'page'; $_p['comment_status'] = 'closed'; $_p['ping_status'] = 'closed'; $_p['post_category'] = array(1); // the default 'Uncategorised' $new_page_template = $_p['page_template']; unset($_p['page_template']); //$_p['page_template'] = 'Takken'; /* indien template niet bestaat gaat er blijkbaar iets fout * De pagina wordt aangemaakt, maar we krijgen geen ID -> wp_insert_post() geeft geen ID * De pagina koppelen aan de template doen in de theme functions.php (?) */ //Insert the post into the database $page_id = wp_insert_post($_p); if (!empty($new_page_template)) { update_post_meta($page_id, '_wp_page_template', $new_page_template); } function scotts_set_nav_menu($menu_id, $location) { $locations = get_theme_mod('nav_menu_locations'); $locations[$location] = $menu_id; set_theme_mod('nav_menu_locations', $locations); } //echo "building menu"; $menu_name = 'footer_menu'; $locations = get_nav_menu_locations(); //var_dump($locations); //if ( !is_nav_menu( 'footer_menu' )) { //$run_once = get_option('menu_check'); //if (!$run_once){ $name = 'footer_menu'; if (!is_nav_menu($name)) { $menu_id = wp_create_nav_menu($name); } $menu = get_term_by('name', $name, 'nav_menu'); /* wp_update_nav_menu_item($menu->term_id, 0, array( 'menu-item-title' => 'First Menu Item', 'menu-item-url' => 'http://mysite.com', 'menu-item-status' => 'publish'));*/ $itemData = array('menu-item-object-id' => $page_id, 'menu-item-parent-id' => 0, 'menu-item-position' => 2, 'menu-item-object' => 'page', 'menu-item-type' => 'post_type', 'menu-item-status' => 'publish'); wp_update_nav_menu_item($menu->term_id, 0, $itemData); scotts_set_nav_menu($menu->term_id, 'footer_menu'); } else { // the plugin may have been previously active and the page may just be trashed... $page_id = $mypage->ID; //make sure the page is not trashed... $mypage->post_content = "Recovered from trash.<br /><br />De inhoud van deze pagina wordt automatisch aangemaakt. Je dient deze dus niet te editeren.<br /><br />De Scoutnet API secret key moet ingevuld zijn. Zie Instellingen -> Scoutnet API group"; $mypage->post_status = 'publish'; $page_id = wp_update_post($mypage); } $this->pages[$_p['post_name']]['id'] = $page_id; update_option('sn_scoutnet_pages', $this->pages); }
} // Generate truncated menu names foreach ((array) $nav_menus as $key => $_nav_menu) { $nav_menus[$key]->truncated_name = wp_html_excerpt($_nav_menu->name, 40, '…'); } // Retrieve menu locations if (current_theme_supports('menus')) { $locations = get_registered_nav_menus(); $menu_locations = get_nav_menu_locations(); } // Ensure the user will be able to scroll horizontally // by adding a class for the max menu depth. global $_wp_nav_menu_max_depth; $_wp_nav_menu_max_depth = 0; // Calling wp_get_nav_menu_to_edit generates $_wp_nav_menu_max_depth if (is_nav_menu($nav_menu_selected_id)) { $menu_items = wp_get_nav_menu_items($nav_menu_selected_id, array('post_status' => 'any')); $edit_markup = wp_get_nav_menu_to_edit($nav_menu_selected_id); } function wp_nav_menu_max_depth($classes) { global $_wp_nav_menu_max_depth; return "{$classes} menu-max-depth-{$_wp_nav_menu_max_depth}"; } add_filter('admin_body_class', 'wp_nav_menu_max_depth'); wp_nav_menu_setup(); wp_initial_nav_menu_meta_boxes(); if (!current_theme_supports('menus') && !$num_locations) { $messages[] = '<div id="message" class="updated"><p>' . sprintf(__('Your theme does not natively support menus, but you can use them in sidebars by adding a “Custom Menu” widget on the <a href="%s">Widgets</a> screen.'), admin_url('widgets.php')) . '</p></div>'; } if (!$locations_screen) {
<div id="nav_wrapper"> <div class="nav_wrapper_inner"> <div id="menu_border_wrapper"> <?php //Check if has custom menu if (is_object($post) && $post->post_type == 'page') { $page_menu = get_post_meta($current_page_id, 'page_menu', true); } if (empty($page_menu)) { if (has_nav_menu('primary-menu')) { wp_nav_menu(array('menu_id' => 'main_menu', 'menu_class' => 'nav', 'theme_location' => 'primary-menu', 'walker' => new tg_walker())); } else { echo '<div class="notice">' . __('Setup Menu via Wordpress Dashboard > Appearance > Menus', THEMEDOMAIN) . '</div>'; } } else { if ($page_menu && is_nav_menu($page_menu)) { wp_nav_menu(array('menu' => $page_menu, 'walker' => new tg_walker(), 'menu_id' => 'main_menu', 'menu_class' => 'nav')); } } ?> </div> </div> </div> <!-- End main nav --> </div> <?php } ?> </div> </div>
/** * Returns the menu formatted to edit. * * @since 3.0.0 * * @param string $menu_id The ID of the menu to format. * @return string|WP_Error $output The menu formatted to edit or error object on failure. */ function wp_get_nav_menu_to_edit($menu_id = 0) { $menu = wp_get_nav_menu_object($menu_id); // If the menu exists, get its items. if (is_nav_menu($menu)) { $menu_items = wp_get_nav_menu_items($menu->term_id, array('post_status' => 'any')); $result = '<div id="menu-instructions" class="post-body-plain'; $result .= !empty($menu_items) ? ' menu-instructions-inactive">' : '">'; $result .= '<p>' . __('Select menu items (pages, categories, links) from the boxes at left to begin building your custom menu.') . '</p>'; $result .= '</div>'; if (empty($menu_items)) { return $result . ' <ul class="menu" id="menu-to-edit"> </ul>'; } $walker_class_name = apply_filters('wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', $menu_id); if (class_exists($walker_class_name)) { $walker = new $walker_class_name(); } else { return new WP_Error('menu_walker_not_exist', sprintf(__('The Walker class named <strong>%s</strong> does not exist.'), $walker_class_name)); } $some_pending_menu_items = $some_invalid_menu_items = false; foreach ((array) $menu_items as $menu_item) { if (isset($menu_item->post_status) && 'draft' == $menu_item->post_status) { $some_pending_menu_items = true; } if (!empty($menu_item->_invalid)) { $some_invalid_menu_items = true; } } if ($some_pending_menu_items) { $result .= '<div class="updated inline"><p>' . __('Click Save Menu to make pending menu items public.') . '</p></div>'; } if ($some_invalid_menu_items) { $result .= '<div class="error inline"><p>' . __('There are some invalid menu items. Please check or delete them.') . '</p></div>'; } $result .= '<ul class="menu" id="menu-to-edit"> '; $result .= walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $menu_items), 0, (object) array('walker' => $walker)); $result .= ' </ul> '; return $result; } elseif (is_wp_error($menu)) { return $menu; } }
/** * Get the current menu ID. * * Most of this taken from wp-admin/nav-menus.php (no built in functions to do this) * * @since 1.0 * @return int */ public function get_selected_menu_id() { $nav_menus = wp_get_nav_menus(array('orderby' => 'name')); $menu_count = count($nav_menus); $nav_menu_selected_id = isset($_REQUEST['menu']) ? (int) $_REQUEST['menu'] : 0; $add_new_screen = isset($_GET['menu']) && 0 == $_GET['menu'] ? true : false; // If we have one theme location, and zero menus, we take them right into editing their first menu $page_count = wp_count_posts('page'); $one_theme_location_no_menus = 1 == count(get_registered_nav_menus()) && !$add_new_screen && empty($nav_menus) && !empty($page_count->publish) ? true : false; // Get recently edited nav menu $recently_edited = absint(get_user_option('nav_menu_recently_edited')); if (empty($recently_edited) && is_nav_menu($nav_menu_selected_id)) { $recently_edited = $nav_menu_selected_id; } // Use $recently_edited if none are selected if (empty($nav_menu_selected_id) && !isset($_GET['menu']) && is_nav_menu($recently_edited)) { $nav_menu_selected_id = $recently_edited; } // On deletion of menu, if another menu exists, show it if (!$add_new_screen && 0 < $menu_count && isset($_GET['action']) && 'delete' == $_GET['action']) { $nav_menu_selected_id = $nav_menus[0]->term_id; } // Set $nav_menu_selected_id to 0 if no menus if ($one_theme_location_no_menus) { $nav_menu_selected_id = 0; } elseif (empty($nav_menu_selected_id) && !empty($nav_menus) && !$add_new_screen) { // if we have no selection yet, and we have menus, set to the first one in the list $nav_menu_selected_id = $nav_menus[0]->term_id; } return $nav_menu_selected_id; }
function kleo_set_custom_menu($args = '') { if ('primary' != $args['theme_location']) { return $args; } global $post; if (!empty($post)) { $menuslug = get_cfield('page_menu', $post->ID); if (!empty($menuslug) && $menuslug != 'default' && is_nav_menu($menuslug)) { $args['menu'] = $menuslug; } } // END if(!empty($post)) return $args; }
/** * Logic for what to display in the left sidebar menus. * * Usually, it finds the top-level parent of the current page, and displays * all of its subpages. * * For the Business section, it finds the second-to-top level parent instead. * * Each possible menu can also be overridden with a custom nav menu. */ function get_ameris_sidebar_menu() { global $post; // blog/single pages: About Us menu if (is_home() || is_single() || is_search() || is_category()) { $top_level_id = 61; if (is_singular('lending_expert')) { $top_level_id = 27; } if (is_singular('advisor')) { $top_level_id = 11; } if (is_singular('warehouse_lender')) { $top_level_id = 33; } $top_level = get_post($top_level_id); $output = wp_nav_menu(array('theme_location' => 'sidebar-' . $top_level_id, 'fallback_cb' => 'ameris_sidebar_menu_fallback', 'ameris_menu_parent' => $top_level, 'echo' => 0, 'walker' => new Ameris_Walker_Nav_Menu())); } else { $override = get_field('sidebar_menu_override', $post->ID); if ($override && is_nav_menu($override)) { // display a specific menu for this location $output = wp_nav_menu(array('menu' => (int) $override, 'echo' => 0, 'walker' => new Ameris_Walker_Nav_Menu())); } else { // get top-level parent $ancestors = $all_ancestors = get_post_ancestors($post); if ($ancestors) { $top_level = array_pop($ancestors); } else { $top_level = $post; } // grab object if you don't already have it $top_level = get_post($top_level); // for business pages, get menu based on one level down if ($top_level->ID === 20 && $all_ancestors) { $second_level = array_pop($ancestors); $second_level = get_post($second_level); $theme_location = 'sidebar-business-' . $second_level->ID; $menu_parent = $second_level; // for pages outside the normal hierarchy, just give them the top-level Business menu $locations = get_registered_nav_menus(); if (!array_key_exists($theme_location, $locations)) { $theme_location = 'sidebar-' . $top_level->ID; $menu_parent = $top_level; } // display a custom menu for this location, or alternately, display all sub-pages $output = wp_nav_menu(array('theme_location' => $theme_location, 'fallback_cb' => 'ameris_sidebar_menu_fallback', 'ameris_menu_parent' => $menu_parent, 'echo' => 0, 'walker' => new Ameris_Walker_Nav_Menu())); // for all other pages, get menu based on top level } else { $output = wp_nav_menu(array('theme_location' => 'sidebar-' . $top_level->ID, 'fallback_cb' => 'ameris_sidebar_menu_fallback', 'ameris_menu_parent' => $top_level, 'echo' => 0, 'walker' => new Ameris_Walker_Nav_Menu())); } } } return $output; }