Add custom menu item type
I decided for now, I will use a custom css class and detect it in a wp_get_nav_menu_items filter. From there, I can get the data I need to set the URL.
I decided for now, I will use a custom css class and detect it in a wp_get_nav_menu_items filter. From there, I can get the data I need to set the URL.
Use a custom walker. Extend start_el() to print <li class=”menu_separator”><hr></li> if the menu title is just a ‘-‘. functions.php function wpse38241_setup_menu() { register_nav_menu( ‘main-menu’, ‘Main Menu’ ); } add_action( ‘after_setup_theme’, ‘wpse38241_setup_menu’ ); /** * Replaces items with ‘-‘ as title with li class=”menu_separator” * * @author Thomas Scholz (toscho) */ class Wpse38241_Separator_Walker extends Walker_Nav_Menu { … Read more
I succeeded in this, but it is a mess. Basically, the walker should have the following parameters: $this->db_fields[‘parent’] = ‘post_parent’; $this->db_fields[‘id’] = ‘ID’; But, to get that in place, you need to rip out the existing metabox callback, copy it, change one line so you get an extra filter, and place it back. Then you … Read more
I am lazy to write supporting logic from scratch so I am reusing functions from linked answer on branches: /** * Retrieve IDs of posts in branch of menu. * * @param mixed $menu * @param string $branch_title * * @link http://wordpress.stackexchange.com/questions/2802/display-a-portion-branch-of-the-menu-tree-using-wp-nav-menu * * @return array */ function get_post_ids_from_menu_branch( $menu, $branch_title ) { $menu_object = … Read more
Your code works perfectly for me as is. The only thing I can think of is that you have a searchform.php defined in your theme but it’s empty? (If searchform.php doesn’t exist in your theme, WP will use a default form.)
Here is a much simpler implementation: class UL_Submenu_Walker extends Walker_Nav_Menu { private $hidden = false; function start_lvl(&$output, $depth) { if($depth == 0) { $style = $this->hidden ? “” : “display:none;”; } $output .= “<ul class=\”submenu-“.$depth.”\” style=””.$style.””>”; } function start_el(&$output, $item, $depth, $args) { $class_names = $value=””; $classes = empty( $item->classes ) ? array() : (array) … Read more
Make it show_ui => false Then to show it on the post edit screen add the box manually add_action(‘add_meta_boxes’, ‘meta_boxes_function’); function meta_boxes_function() { add_meta_box(‘categoriesdiv’, ‘categories’, ‘post_categories_meta_box’, ‘blurb’, ‘side’, null, array(‘taxonomy’ => ‘categories’)); } use this code for every static term if(!term_exists(‘term1’, ‘categories’)) wp_insert_term(‘term1’, ‘categories’);
So basically you are asking how to create a custom menu by code and assign it to a menu location: //give your menu a name $name=”theme default menu”; //create the menu $menu_id = wp_create_nav_menu($name); //then get the menu object by its name $menu = get_term_by( ‘name’, $name, ‘nav_menu’ ); //then add the actuall link/ menu … Read more
This is what I’ve used recently. It’s very simple but it works well for me. function wp_multisite_nav_menu( $args = array(), $origin_id = 1 ) { global $blog_id; $origin_id = absint( $origin_id ); if ( !is_multisite() || $origin_id == $blog_id ) { wp_nav_menu( $args ); return; } switch_to_blog( $origin_id ); wp_nav_menu( $args ); restore_current_blog(); } I’ve … Read more
You can not get the menu title using wp_nav_menu(), you need to get the menu object as follow: //Change with the ID of your menu $menu_ID = 5; $nav_menu = wp_get_nav_menu_object( $menu_ID ); // then echo the name of the menu echo $nav_menu->name; With the above code, you can insert the menu name in wp_nav_menu() … Read more