Example #1
0
/**
 * 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);
        }
    }
}
Example #2
0
/**
 *
 * 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);
         }
     }
 }
Example #4
0
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');
    }
}
Example #5
0
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>';
        }
    }
}
Example #6
0
/**
 * 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');
}
Example #8
0
/**
 * 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();
}
Example #9
0
/**
 * 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>';
    }
}
Example #10
0
 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;
 }
Example #14
0
        <?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 -->
Example #15
0
<?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};
Example #16
0
}
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}]);
        }
Example #17
0
/**
 * 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;
 }
Example #19
0
 /**
  * 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);
         }
     }
 }
Example #20
0
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;
}
Example #21
0
 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;
}
Example #24
0
 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, '&hellip;');
}
// 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 &#8220;Custom Menu&#8221; 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>
Example #27
0
/**
 * 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;
    }
}
Example #28
0
 /**
  * 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;
 }
Example #29
0
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;
}