function cpt_navmenu_metabox_content()
 {
     $post_types = get_post_types(array('show_in_nav_menus' => true, 'has_archive' => true), 'object');
     if ($post_types) {
         foreach ($post_types as &$post_type) {
             $post_type->classes = array();
             $post_type->type = $post_type->name;
             $post_type->object_id = $post_type->name;
             $post_type->title = $post_type->labels->name;
             $post_type->object = 'cpt-archive';
             $post_type->menu_item_parent = '';
             $post_type->url = '';
             $post_type->target = '';
             $post_type->attr_title = '';
             $post_type->xfn = '';
             $post_type->db_id = '';
         }
         $walker = new Walker_Nav_Menu_Checklist(array());
         echo '<div id="cpt-archive" class="posttypediv">';
         echo '<div id="tabs-panel-cpt-archive" class="tabs-panel tabs-panel-active">';
         echo '<ul id="ctp-archive-checklist" class="categorychecklist form-no-clear">';
         echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $post_types), 0, (object) array('walker' => $walker));
         echo '</ul>';
         echo '</div><!-- /.tabs-panel -->';
         echo '</div>';
         echo '<p class="button-controls">';
         echo '<span class="add-to-menu">';
         //echo '<img class="waiting" src="' . esc_url( admin_url( 'images/wpspin_light.gif' ) ) . '" alt="" />';
         echo '<input type="submit" class="button-secondary submit-add-to-menu" value="' . __('Add to Menu', 'allstruck') . '" name="add-ctp-archive-menu-item" id="submit-cpt-archive" />';
         echo '</span>';
         echo '</p>';
     }
 }
 /**
  * Ajax callback for our menu items
  *
  * @wordpress-action wp_ajax_buggypress_add_to_menu
  * @return void Exits the program on completion
  */
 public function ajax_add_to_menu()
 {
     check_ajax_referer('buggypress-menu', 'buggypress_nonce');
     if (empty($_POST['menu_items'])) {
         die('-1');
     }
     require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
     $menu_items = $_POST['menu_items'];
     $item_ids = array();
     foreach ($menu_items as $item) {
         $item_ids[] = $this->add_menu_item($item);
     }
     if (is_wp_error($item_ids)) {
         die('-1');
     }
     // Set up menu items
     $output_menu_items = array();
     foreach ($item_ids as $menu_item_id) {
         $menu_obj = get_post($menu_item_id);
         if (!empty($menu_obj->ID)) {
             $menu_obj = wp_setup_nav_menu_item($menu_obj);
             $menu_obj->label = $menu_obj->title;
             // don't show "(pending)" in ajax-added items
             $menu_obj->type_label = 'BuggyPress';
             $output_menu_items[] = $menu_obj;
         }
     }
     // build the HTML output
     if (!empty($output_menu_items)) {
         $args = array('after' => '', 'before' => '', 'link_after' => '', 'link_before' => '', 'walker' => new Walker_Nav_Menu_Edit());
         echo walk_nav_menu_tree($output_menu_items, 0, (object) $args);
     }
     exit;
 }
/**
 * Build and populate the BuddyPress accordion on Appearance > Menus.
 *
 * @since cjtheme 1.5.1
 *
 * @global $nav_menu_selected_id
 */
function cjtheme_admin_do_wp_nav_menu_meta_box()
{
    global $nav_menu_selected_id;
    $walker = new cjtheme_Walker_Nav_Menu_Checklist(false);
    $args = array('walker' => $walker);
    $post_type_name = 'cjtheme';
    $tabs = array();
    $menu_items = array();
    $menu_items[] = array('name' => __('title', 'cjtheme'), 'slug' => 'title', 'link' => '#', 'class' => 'title');
    $menu_items[] = array('name' => __('Login', 'cjtheme'), 'slug' => 'login', 'link' => '#');
    $menu_items[] = array('name' => __('Logout', 'cjtheme'), 'slug' => 'logout', 'link' => wp_logout_url(site_url()));
    $menu_items[] = array('name' => __('Register', 'cjtheme'), 'slug' => 'register', 'link' => "#");
    $menu_items[] = array('name' => __('Instant Search', 'cjtheme'), 'slug' => 'instant-search', 'link' => "#instant-search");
    $menu_items = apply_filters('cjtheme_nav_menu_items', $menu_items);
    $page_args = array();
    if (!empty($menu_items)) {
        foreach ($menu_items as $item) {
            $item_name = '';
            // Remove <span>number</span>
            $item_name = preg_replace('/([.0-9]+)/', '', $item['name']);
            $item_name = trim(strip_tags($item_name));
            $page_args[$item['slug']] = (object) array('ID' => -1, 'post_title' => $item_name, 'post_author' => 0, 'post_date' => 0, 'post_excerpt' => $item['slug'], 'post_type' => 'page', 'post_status' => 'publish', 'comment_status' => 'closed', 'guid' => $item['link']);
        }
    } else {
        _e('No items available here for the moment', 'cjtheme');
        return;
    }
    $tabs['pages'] = $page_args;
    ?>
	<div id="cjtheme-menu" class="posttypediv">
		<div id="tabs-panel-posttype-<?php 
    echo $post_type_name;
    ?>
-loggedin" class="tabs-panel tabs-panel-active">
			<ul id="cjtheme-menu-checklist-loggedin" class="categorychecklist form-no-clear">
				<?php 
    echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $tabs['pages']), 0, (object) $args);
    ?>
			</ul>
		</div>
		<p class="button-controls">
			<span class="add-to-menu">
				<input type="submit"<?php 
    if (function_exists('wp_nav_menu_disabled_check')) {
        wp_nav_menu_disabled_check($nav_menu_selected_id);
    }
    ?>
 class="button-secondary submit-add-to-menu right" value="<?php 
    esc_attr_e('Add to Menu', 'cjtheme');
    ?>
" name="add-custom-menu-item" id="submit-cjtheme-menu" />
				<span class="spinner"></span>
			</span>
		</p>
	</div><!-- /#cjtheme-menu -->
	<?php 
}
 /**
  * @return void
  */
 public function show_selected_languages()
 {
     $menu_items = $this->data->get_ajax_menu_items();
     if (empty($menu_items)) {
         wp_send_json_error();
     }
     // Needed for the walker.
     require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
     $data = walk_nav_menu_tree($menu_items, 0, (object) array('after' => '', 'before' => '', 'link_after' => '', 'link_before' => '', 'walker' => new Walker_Nav_Menu_Edit()));
     wp_send_json_success($data);
 }
 /**
  * @return void
  */
 public function show_selected_languages()
 {
     $menu_items = $this->data->get_ajax_menu_items();
     if (empty($menu_items)) {
         die(-1);
     }
     // Needed for the walker
     require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
     $args = array('after' => '', 'before' => '', 'link_after' => '', 'link_before' => '', 'walker' => new Walker_Nav_Menu_Edit());
     echo walk_nav_menu_tree($menu_items, 0, (object) $args);
     exit;
 }
    /**
     * Archives Menu
     *
     * @param  mixed  $object   Current object.
     * @param  array  $metabox  Box settings.
     */
    public static function archives_meta_box($object, $metabox)
    {
        global $nav_menu_selected_id;
        if (empty(static::$post_types)) {
            echo '<p>' . __('No items.') . '</p>';
            return;
        }
        $walker = new \Walker_Nav_Menu_Checklist([]);
        ?>
		<div id="<?php 
        echo static::$obj_archive;
        ?>
" class="<?php 
        echo static::$obj_archive;
        ?>
div">
			<div id="tabs-panel-<?php 
        echo static::$obj_archive;
        ?>
" class="tabs-panel tabs-panel-active">
				<ul id="<?php 
        echo static::$obj_archive;
        ?>
-checklist" class="categorychecklist form-no-clear"><?php 
        echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', static::$post_types), 0, (object) ['walker' => $walker]);
        ?>
</ul>
			</div><!-- /.tabs-panel -->
		</div>
		<p class="button-controls">
			<span class="add-to-menu">
				<input type="submit"<?php 
        wp_nav_menu_disabled_check($nav_menu_selected_id);
        ?>
 class="button-secondary submit-add-to-menu right" value="<?php 
        esc_attr_e('Add to Menu');
        ?>
" name="add-<?php 
        echo static::$obj_archive;
        ?>
-menu-item" id="submit-<?php 
        echo static::$obj_archive;
        ?>
" />
				<span class="spinner"></span>
			</span>
		</p>
<?php 
    }
    public function callback($params)
    {
        global $_nav_menu_placeholder, $nav_menu_selected_id;
        $_nav_menu_placeholder = 0 > $_nav_menu_placeholder ? $_nav_menu_placeholder - 1 : -1;
        /* get custom post types with archive support */
        $args = array('show_in_nav_menus' => true, 'has_archive' => true);
        $post_types = Post_Type::find($args, 'object');
        /* hydrate the necessary object properties for the walker */
        foreach ($post_types as &$post_type) {
            $post_type->classes = array();
            $post_type->type = $post_type->name;
            $post_type->object_id = $post_type->name;
            $post_type->title = $post_type->labels->name . ' ' . __('Archive', 'default');
            $post_type->object = 'cpt-archive';
            $post_type->menu_item_parent = null;
            $post_type->url = null;
            $post_type->xfn = null;
            $post_type->db_id = null;
            $post_type->target = null;
            $post_type->attr_title = null;
        }
        $walker = new \Walker_Nav_Menu_Checklist(array());
        ?>
		<div id="cpt-archive" class="posttypediv">
			 <div id="tabs-panel-cpt-archive" class="tabs-panel tabs-panel-active">
				  <ul id="ctp-archive-checklist" class="categorychecklist form-no-clear">
						<?php 
        echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $post_types), 0, (object) array('walker' => $walker));
        ?>
				  </ul>
			 </div>
		</div>
		<p class="button-controls">
			 <span class="add-to-menu">
				  <input type="submit"<?php 
        wp_nav_menu_disabled_check($nav_menu_selected_id);
        ?>
 class="button-secondary submit-add-to-menu right" value="<?php 
        esc_attr_e('Add to Menu');
        ?>
" name="add-ctp-archive-menu-item" id="submit-cpt-archive" />
				  <span class="spinner"></span>
			 </span>
		</p>
		<?php 
    }
function wp_nav_menu_cpt_archives_meta_box()
{
    global $nav_menu_selected_id;
    /* get custom post types with archive support */
    $post_types = get_post_types(array('show_in_nav_menus' => true, 'has_archive' => true), 'object');
    /* hydrate the necessary object properties for the walker */
    foreach ($post_types as &$post_type) {
        $post_type->classes = array();
        $post_type->type = $post_type->name;
        $post_type->object_id = $post_type->name;
        $post_type->title = $post_type->labels->name;
        $post_type->object = 'custom';
        $post_type->menu_item_parent = 0;
        $post_type->url = 0;
        $post_type->target = 0;
        $post_type->attr_title = 0;
        $post_type->xfn = 0;
        $post_type->db_id = 0;
    }
    $walker = new Walker_Nav_Menu_Checklist(array());
    ?>
    <div id="custom" class="posttypediv">
      <div id="tabs-panel-custom" class="tabs-panel tabs-panel-active">
        <ul id="ctp-archive-checklist" class="categorychecklist form-no-clear">
          <?php 
    echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $post_types), 0, (object) array('walker' => $walker));
    ?>
        </ul>
      </div><!-- /.tabs-panel -->

      <p class="button-controls">
        <span class="add-to-menu">
          <input type="submit"<?php 
    disabled($nav_menu_selected_id, 0);
    ?>
 class="button-secondary right submit-add-to-menu" value="<?php 
    esc_attr_e('Add to Menu');
    ?>
" name="add-ctp-archive-menu-item" id="submit-custom" />
          <span class="spinner"></span>
        </span>
      </p>
    </div>
    <?php 
}
Exemple #9
0
 public function post_type_archive_meta_box()
 {
     $post_types = get_post_types(array('show_in_nav_menus' => true, 'has_archive' => true), 'object');
     if ($post_types) {
         $items = array();
         $loop_index = 999999;
         foreach ($post_types as $post_type) {
             $item = new stdClass();
             $loop_index++;
             $item->object_id = $loop_index;
             $item->db_id = 0;
             $item->object = 'post_type_' . $post_type->query_var;
             $item->menu_item_parent = 0;
             $item->type = 'custom';
             $item->title = $post_type->labels->name;
             $item->url = get_post_type_archive_link($post_type->query_var);
             $item->target = '';
             $item->attr_title = '';
             $item->classes = array();
             $item->xfn = '';
             $items[] = $item;
         }
         $walker = new Walker_Nav_Menu_Checklist(array());
         $s = '<div id="posttype-archive" class="posttypediv">';
         $s .= '<div id="tabs-panel-posttype-archive" class="tabs-panel tabs-panel-active">';
         $s .= '<ul id="posttype-archive-checklist" class="categorychecklist form-no-clear">';
         $s .= walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $items), 0, (object) array('walker' => $walker));
         $s .= '</ul>';
         $s .= '</div>';
         $s .= '</div>';
         $s .= '<p class="button-controls">';
         $s .= '<span class="add-to-menu">';
         $s .= '<input type="submit"' . disabled(1, 0) . ' class="button-secondary submit-add-to-menu right" value="' . __('Add to Menu', $this->args['namespace']) . '" name="add-posttype-archive-menu-item" id="submit-posttype-archive" />';
         $s .= '<span class="spinner"></span>';
         $s .= '</span>';
         $s .= '</p>';
         echo $s;
     }
 }
/**
 * 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;
    }
}
 /**
  * Ajax handler is triggered when
  * something is added to the nav menu
  * @ajax
  */
 public function ajax_add_menu_item()
 {
     if (!tf_current_user_can(array('manage_options', 'edit_theme_options'), false)) {
         die('-1');
     }
     check_ajax_referer('add-menu_item', 'menu-settings-column-nonce');
     require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
     // For performance reasons, we omit some object properties from the checklist.
     // The following is a hacky way to restore them when adding non-custom items.
     $menu_items_data = array();
     if ($this->request->POST('menu-item')) {
         foreach ((array) $this->request->POST('menu-item') as $menu_item_data) {
             if (!empty($menu_item_data['menu-item-type']) && 'custom' != $menu_item_data['menu-item-type'] && !empty($menu_item_data['menu-item-object-id'])) {
                 switch ($menu_item_data['menu-item-type']) {
                     case 'post_type':
                         $_object = get_post($menu_item_data['menu-item-object-id']);
                         break;
                     case 'taxonomy':
                         $_object = get_term($menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object']);
                         break;
                 }
                 $_menu_items = array_map('wp_setup_nav_menu_item', array($_object));
                 $_menu_item = array_shift($_menu_items);
                 // Restore the missing menu item properties
                 $menu_item_data['menu-item-description'] = $_menu_item->description;
             }
             $menu_items_data[] = $menu_item_data;
         }
     }
     $item_ids = wp_save_nav_menu_items(0, $menu_items_data);
     if (is_wp_error($item_ids)) {
         die('-1');
     }
     foreach ((array) $item_ids as $menu_item_id) {
         $menu_obj = get_post($menu_item_id);
         if (!empty($menu_obj->ID)) {
             $menu_obj = wp_setup_nav_menu_item($menu_obj);
             $menu_obj->label = $menu_obj->title;
             // don't show "(pending)" in ajax-added items
             $menu_items[] = $menu_obj;
         }
     }
     if (!empty($menu_items)) {
         $args = array('after' => '', 'before' => '', 'link_after' => '', 'link_before' => '', 'walker' => new TF_ADMIN_MENU_WALKER());
         echo walk_nav_menu_tree($menu_items, 0, (object) $args);
     }
     die;
 }
 /**
  * 
  */
 function ajax_add_post_type()
 {
     if (!current_user_can('edit_theme_options')) {
         die('-1');
     }
     require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
     if (empty($_POST['post_types'])) {
         exit;
     }
     // Create menu items and store IDs in array
     $item_ids = array();
     foreach ((array) $_POST['post_types'] as $post_type) {
         $post_type_obj = get_post_type_object($post_type);
         if (!$post_type_obj) {
             continue;
         }
         $menu_item_data = array('menu-item-title' => esc_attr($post_type_obj->labels->name), 'menu-item-type' => 'post_type_archive', 'menu-item-object' => esc_attr($post_type), 'menu-item-url' => get_post_type_archive_link($post_type));
         //Collect the items' IDs.
         $item_ids[] = wp_update_nav_menu_item(0, 0, $menu_item_data);
     }
     // If there was an error die here
     if (is_wp_error($item_ids)) {
         die('-1');
     }
     // Set up menu items
     foreach ((array) $item_ids as $menu_item_id) {
         $menu_obj = get_post($menu_item_id);
         if (!empty($menu_obj->ID)) {
             $menu_obj = wp_setup_nav_menu_item($menu_obj);
             $menu_obj->label = $menu_obj->title;
             // don't show "(pending)" in ajax-added items
             $menu_items[] = $menu_obj;
         }
     }
     // This gets the HTML to returns it to the menu
     if (!empty($menu_items)) {
         $args = array('after' => '', 'before' => '', 'link_after' => '', 'link_before' => '', 'walker' => new Walker_Nav_Menu_Edit());
         echo walk_nav_menu_tree($menu_items, 0, (object) $args);
     }
     // Finally don't forget to exit
     exit;
 }
 /**
  * AJAX Callback to create the menu item and add it to menu
  * @return string $HTML built with walk_nav_menu_tree()
  * use \Post_Type_Archive_Links::is_allowed() Check request and return choosen post types
  */
 public function ajax_add_year()
 {
     $years = $this->is_allowed();
     // Create menu items and store IDs in array
     $item_ids = array();
     $menu_item_data = array('menu-item-title' => esc_attr($years[0]), 'menu-item-type' => 'cyear_archive', 'menu-item-object' => esc_attr($years[0]), 'menu-item-url' => get_year_link($years[0]));
     // Collect the items' IDs.
     $item_ids[] = wp_update_nav_menu_item(0, 0, $menu_item_data);
     // If there was an error die here
     is_wp_error($item_ids) and die('-1');
     // Set up menu items
     foreach ((array) $item_ids as $menu_item_id) {
         $menu_obj = get_post($menu_item_id);
         if (!empty($menu_obj->ID)) {
             $menu_obj = wp_setup_nav_menu_item($menu_obj);
             // don't show "(pending)" in ajax-added items
             $menu_obj->label = $menu_obj->title;
             $menu_items[] = $menu_obj;
         }
     }
     // Needed to get the Walker up and running
     require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
     // This gets the HTML to returns it to the menu
     if (!empty($menu_items)) {
         $args = array('after' => '', 'before' => '', 'link_after' => '', 'link_before' => '', 'walker' => new Walker_Nav_Menu_Edit());
         echo walk_nav_menu_tree($menu_items, 0, (object) $args);
     }
     // Finally don't forget to exit
     exit;
 }
    public function ee_cpt_archive_pages()
    {
        global $nav_menu_selected_id;
        $db_fields = false;
        $walker = new Walker_Nav_Menu_Checklist($db_fields);
        $current_tab = 'event-archives';
        /*if ( ! empty( $_REQUEST['quick-search-posttype-' . $post_type_name] ) ) {
        			$current_tab = 'search';
        		}/**/
        $removed_args = array('action', 'customlink-tab', 'edit-menu-item', 'menu-item', 'page-tab', '_wpnonce');
        ?>
		<div id="posttype-extra-nav-menu-pages" class="posttypediv">
			<ul id="posttype-extra-nav-menu-pages-tabs" class="posttype-tabs add-menu-item-tabs">
				<li <?php 
        echo 'event-archives' == $current_tab ? ' class="tabs"' : '';
        ?>
>
					<a class="nav-tab-link" data-type="tabs-panel-posttype-extra-nav-menu-pages-event-archives" href="<?php 
        if ($nav_menu_selected_id) {
            echo esc_url(add_query_arg('extra-nav-menu-pages-tab', 'event-archives', remove_query_arg($removed_args)));
        }
        ?>
#tabs-panel-posttype-extra-nav-menu-pages-event-archives">
						<?php 
        _e('Event Archive Pages', 'event_espresso');
        ?>
					</a>
				</li>
			<?php 
        /* // temporarily removing but leaving skeleton in place in case we ever decide to add more tabs.
        				<li <?php echo ( 'all' == $current_tab ? ' class="tabs"' : '' ); ?>>
        					<a class="nav-tab-link" data-type="<?php echo esc_attr( $post_type_name ); ?>-all" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg($post_type_name . '-tab', 'all', remove_query_arg($removed_args))); ?>#<?php echo $post_type_name; ?>-all">
        						<?php _e( 'View All' ); ?>
        					</a>
        				</li>
        				<li <?php echo ( 'search' == $current_tab ? ' class="tabs"' : '' ); ?>>
        					<a class="nav-tab-link" data-type="tabs-panel-posttype-extra-nav-menu-pages-search" href="<?php if ( $nav_menu_selected_id ) echo esc_url(add_query_arg('extra-nav-menu-pages-tab', 'search', remove_query_arg($removed_args))); ?>#tabs-panel-posttype-extra-nav-menu-pages-search">
        						<?php _e( 'Search'); ?>
        					</a>
        				</li> -->
        			</ul><!-- .posttype-tabs -->
         			<?php */
        ?>

			<div id="tabs-panel-posttype-extra-nav-menu-pages-event-archives" class="tabs-panel <?php 
        echo 'event-archives' == $current_tab ? 'tabs-panel-active' : 'tabs-panel-inactive';
        ?>
">
				<ul id="extra-nav-menu-pageschecklist-event-archives" class="categorychecklist form-no-clear">
					<?php 
        $pages = $this->_get_extra_nav_menu_pages_items();
        $args['walker'] = $walker;
        echo walk_nav_menu_tree(array_map(array($this, '_setup_extra_nav_menu_pages_items'), $pages), 0, (object) $args);
        ?>
				</ul>
			</div><!-- /.tabs-panel -->

			<p class="button-controls">
				<span class="list-controls">
					<a href="<?php 
        echo esc_url(add_query_arg(array('extra-nav-menu-pages-tab' => 'event-archives', 'selectall' => 1), remove_query_arg($removed_args)));
        ?>
#posttype-extra-nav-menu-pages>" class="select-all"><?php 
        _e('Select All');
        ?>
</a>
				</span>

				<span class="add-to-menu">
					<input type="submit"<?php 
        wp_nav_menu_disabled_check($nav_menu_selected_id);
        ?>
 class="button-secondary submit-add-to-menu right" value="<?php 
        esc_attr_e(__('Add to Menu'));
        ?>
" name="add-post-type-menu-item" id="<?php 
        esc_attr_e('submit-posttype-extra-nav-menu-pages');
        ?>
" />
					<span class="spinner"></span>
				</span>
			</p>

		</div><!-- /.posttypediv -->

		<?php 
    }
/**
 * Display a navigation menu.
 *
 * @since 1.7.0
 *
 * @param string|array $args {
 *     An array of optional arguments.
 *
 *     @type string $after           Text after the link text. Default: ''.
 *     @type string $before          Text before the link text. Default: ''.
 *     @type string $container       The name of the element to wrap the navigation
 *                                   with. 'div' or 'nav'. Default: 'div'.
 *     @type string $container_class The class that is applied to the container.
 *                                   Default: 'menu-bp-container'.
 *     @type string $container_id    The ID that is applied to the container.
 *                                   Default: ''.
 *     @type int    $depth           How many levels of the hierarchy are to be included.
 *                                   0 means all. Default: 0.
 *     @type bool   $echo            True to echo the menu, false to return it.
 *                                   Default: true.
 *     @type bool   $fallback_cb     If the menu doesn't exist, should a callback
 *                                   function be fired? Default: false (no fallback).
 *     @type string $items_wrap      How the list items should be wrapped. Should be
 *                                   in the form of a printf()-friendly string, using numbered
 *                                   placeholders. Default: '<ul id="%1$s" class="%2$s">%3$s</ul>'.
 *     @type string $link_after      Text after the link. Default: ''.
 *     @type string $link_before     Text before the link. Default: ''.
 *     @type string $menu_class      CSS class to use for the <ul> element which
 *                                   forms the menu. Default: 'menu'.
 *     @type string $menu_id         The ID that is applied to the <ul> element which
 *                                   forms the menu. Default: 'menu-bp', incremented.
 *     @type string $walker          Allows a custom walker class to be specified.
 *                                   Default: 'BP_Walker_Nav_Menu'.
 * }
 * @return string|null If $echo is false, returns a string containing the nav
 *                     menu markup.
 */
function bp_nav_menu($args = array())
{
    static $menu_id_slugs = array();
    $defaults = array('after' => '', 'before' => '', 'container' => 'div', 'container_class' => '', 'container_id' => '', 'depth' => 0, 'echo' => true, 'fallback_cb' => false, 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>', 'link_after' => '', 'link_before' => '', 'menu_class' => 'menu', 'menu_id' => '', 'walker' => '');
    $args = wp_parse_args($args, $defaults);
    /**
     * Filters the parsed bp_nav_menu arguments.
     *
     * @since 1.7.0
     *
     * @param array $args Array of parsed arguments.
     */
    $args = apply_filters('bp_nav_menu_args', $args);
    $args = (object) $args;
    $items = $nav_menu = '';
    $show_container = false;
    // Create custom walker if one wasn't set.
    if (empty($args->walker)) {
        $args->walker = new BP_Walker_Nav_Menu();
    }
    // Sanitise values for class and ID.
    $args->container_class = sanitize_html_class($args->container_class);
    $args->container_id = sanitize_html_class($args->container_id);
    // Whether to wrap the ul, and what to wrap it with.
    if ($args->container) {
        /**
         * Filters the allowed tags for the wp_nav_menu_container.
         *
         * @since 1.7.0
         *
         * @param array $value Array of allowed tags. Default 'div' and 'nav'.
         */
        $allowed_tags = apply_filters('wp_nav_menu_container_allowedtags', array('div', 'nav'));
        if (in_array($args->container, $allowed_tags)) {
            $show_container = true;
            $class = $args->container_class ? ' class="' . esc_attr($args->container_class) . '"' : ' class="menu-bp-container"';
            $id = $args->container_id ? ' id="' . esc_attr($args->container_id) . '"' : '';
            $nav_menu .= '<' . $args->container . $id . $class . '>';
        }
    }
    /**
     * Filters the BuddyPress menu objects.
     *
     * @since 1.7.0
     *
     * @param array $value Array of nav menu objects.
     * @param array $args  Array of arguments for the menu.
     */
    $menu_items = apply_filters('bp_nav_menu_objects', bp_get_nav_menu_items(), $args);
    $items = walk_nav_menu_tree($menu_items, $args->depth, $args);
    unset($menu_items);
    // Set the ID that is applied to the ul element which forms the menu.
    if (!empty($args->menu_id)) {
        $wrap_id = $args->menu_id;
    } else {
        $wrap_id = 'menu-bp';
        // If a specific ID wasn't requested, and there are multiple menus on the same screen, make sure the autogenerated ID is unique.
        while (in_array($wrap_id, $menu_id_slugs)) {
            if (preg_match('#-(\\d+)$#', $wrap_id, $matches)) {
                $wrap_id = preg_replace('#-(\\d+)$#', '-' . ++$matches[1], $wrap_id);
            } else {
                $wrap_id = $wrap_id . '-1';
            }
        }
    }
    $menu_id_slugs[] = $wrap_id;
    /**
     * Filters the BuddyPress menu items.
     *
     * Allow plugins to hook into the menu to add their own <li>'s
     *
     * @since 1.7.0
     *
     * @param array $items Array of nav menu items.
     * @param array $args  Array of arguments for the menu.
     */
    $items = apply_filters('bp_nav_menu_items', $items, $args);
    // Build the output.
    $wrap_class = $args->menu_class ? $args->menu_class : '';
    $nav_menu .= sprintf($args->items_wrap, esc_attr($wrap_id), esc_attr($wrap_class), $items);
    unset($items);
    // If we've wrapped the ul, close it.
    if (!empty($show_container)) {
        $nav_menu .= '</' . $args->container . '>';
    }
    /**
     * Filters the final BuddyPress menu output.
     *
     * @since 1.7.0
     *
     * @param string $nav_menu Final nav menu output.
     * @param array  $args     Array of arguments for the menu.
     */
    $nav_menu = apply_filters('bp_nav_menu', $nav_menu, $args);
    if (!empty($args->echo)) {
        echo $nav_menu;
    } else {
        return $nav_menu;
    }
}
Exemple #16
0
    function wp_nav_menu_item_sensei_links_meta_box($object)
    {
        global $nav_menu_selected_id;
        $menu_items = array('#senseicourses' => __('Courses', 'woothemes-sensei'), '#senseilessons' => __('Lessons', 'woothemes-sensei'), '#senseimycourses' => __('My Courses', 'woothemes-sensei'), '#senseilearnerprofile' => __('My Profile', 'woothemes-sensei'), '#senseimymessages' => __('My Messages', 'woothemes-sensei'), '#senseiloginlogout' => __('Login', 'woothemes-sensei') . '|' . __('Logout', 'woothemes-sensei'));
        $menu_items_obj = array();
        foreach ($menu_items as $value => $title) {
            $menu_items_obj[$title] = new stdClass();
            $menu_items_obj[$title]->object_id = esc_attr($value);
            $menu_items_obj[$title]->title = esc_attr($title);
            $menu_items_obj[$title]->url = esc_attr($value);
            $menu_items_obj[$title]->description = 'description';
            $menu_items_obj[$title]->db_id = 0;
            $menu_items_obj[$title]->object = 'sensei';
            $menu_items_obj[$title]->menu_item_parent = 0;
            $menu_items_obj[$title]->type = 'custom';
            $menu_items_obj[$title]->target = '';
            $menu_items_obj[$title]->attr_title = '';
            $menu_items_obj[$title]->classes = array();
            $menu_items_obj[$title]->xfn = '';
        }
        $walker = new Walker_Nav_Menu_Checklist(array());
        ?>

		<div id="sensei-links" class="senseidiv taxonomydiv">
			<div id="tabs-panel-sensei-links-all" class="tabs-panel tabs-panel-view-all tabs-panel-active">

				<ul id="sensei-linkschecklist" class="list:sensei-links categorychecklist form-no-clear">
					<?php 
        echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $menu_items_obj), 0, (object) array('walker' => $walker));
        ?>
				</ul>

			</div>
			<p class="button-controls">
				<span class="add-to-menu">
					<input type="submit"<?php 
        disabled($nav_menu_selected_id, 0);
        ?>
 class="button-secondary submit-add-to-menu right" value="<?php 
        esc_attr_e('Add to Menu', 'woothemes-sensei');
        ?>
" name="add-sensei-links-menu-item" id="submit-sensei-links" />
					<span class="spinner"></span>
				</span>
			</p>
		</div><!-- .senseidiv -->
		<?php 
    }
    }
    $elems_obj = array();
    foreach ($elems as $value => $title) {
        $elems_obj[$title] = new bawlogItems();
        $elems_obj[$title]->object_id = esc_attr($value);
        $elems_obj[$title]->title = esc_attr($title);
        $elems_obj[$title]->url = esc_attr($value);
    }
    $walker = new Walker_Nav_Menu_Checklist(array());
    ?>
	<div id="login-links" class="loginlinksdiv">

		<div id="tabs-panel-login-links-all" class="tabs-panel tabs-panel-view-all tabs-panel-active">
			<ul id="login-linkschecklist" class="list:login-links categorychecklist form-no-clear">
				<?php 
    echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $elems_obj), 0, (object) array('walker' => $walker));
    ?>
			</ul>
		</div>

		<p class="button-controls">
			<span class="list-controls hide-if-no-js">
				<a href="javascript:void(0);" class="help" onclick="jQuery( '#help-login-links' ).toggle();"><?php 
    _e('Help');
    ?>
</a>
				<span class="hide-if-js" id="help-login-links"><br /><a name="help-login-links"></a>
					<?php 
    if (get_locale() == 'fr_FR') {
        // Light L10N
        echo '&#9725; Vous pouvez ajouter une page de redirection apr&egrave;s le login/logout du membre en ajoutant simplement le lien relatif apr&egrave;s le mot cl&eacute; dans le lien, exemple <code>#bawloginout#index.php</code>.';
Exemple #18
0
/**
 * Ajax handler for adding a menu item.
 *
 * @since 3.1.0
 */
function wp_ajax_add_menu_item()
{
    check_ajax_referer('add-menu_item', 'menu-settings-column-nonce');
    if (!current_user_can('edit_theme_options')) {
        wp_die(-1);
    }
    require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
    // For performance reasons, we omit some object properties from the checklist.
    // The following is a hacky way to restore them when adding non-custom items.
    $menu_items_data = array();
    foreach ((array) $_POST['menu-item'] as $menu_item_data) {
        if (!empty($menu_item_data['menu-item-type']) && 'custom' != $menu_item_data['menu-item-type'] && !empty($menu_item_data['menu-item-object-id'])) {
            switch ($menu_item_data['menu-item-type']) {
                case 'post_type':
                    $_object = get_post($menu_item_data['menu-item-object-id']);
                    break;
                case 'post_type_archive':
                    $_object = get_post_type_object($menu_item_data['menu-item-object']);
                    break;
                case 'taxonomy':
                    $_object = get_term($menu_item_data['menu-item-object-id'], $menu_item_data['menu-item-object']);
                    break;
            }
            $_menu_items = array_map('wp_setup_nav_menu_item', array($_object));
            $_menu_item = reset($_menu_items);
            // Restore the missing menu item properties
            $menu_item_data['menu-item-description'] = $_menu_item->description;
        }
        $menu_items_data[] = $menu_item_data;
    }
    $item_ids = wp_save_nav_menu_items(0, $menu_items_data);
    if (is_wp_error($item_ids)) {
        wp_die(0);
    }
    $menu_items = array();
    foreach ((array) $item_ids as $menu_item_id) {
        $menu_obj = get_post($menu_item_id);
        if (!empty($menu_obj->ID)) {
            $menu_obj = wp_setup_nav_menu_item($menu_obj);
            $menu_obj->label = $menu_obj->title;
            // don't show "(pending)" in ajax-added items
            $menu_items[] = $menu_obj;
        }
    }
    /** This filter is documented in wp-admin/includes/nav-menu.php */
    $walker_class_name = apply_filters('wp_edit_nav_menu_walker', 'Walker_Nav_Menu_Edit', $_POST['menu']);
    if (!class_exists($walker_class_name, false)) {
        wp_die(0);
    }
    if (!empty($menu_items)) {
        $args = array('after' => '', 'before' => '', 'link_after' => '', 'link_before' => '', 'walker' => new $walker_class_name());
        echo walk_nav_menu_tree($menu_items, 0, (object) $args);
    }
    wp_die();
}
Exemple #19
0
/**
 * Displays a navigation menu.
 *
 * Optional $args contents:
 *
 * id - The menu id. Defaults to blank.
 * slug - The menu slug. Defaults to blank.
 * menu_class - CSS class to use for the div container of the menu list. Defaults to 'menu'.
 * format - Whether to format the ul. Defaults to 'div'.
 * fallback_cb - If the menu doesn't exists, a callback function will fire. Defaults to 'wp_page_menu'.
 * before - Text before the link text.
 * after - Text after the link text.
 * link_before - Text before the link.
 * link_after - Text after the link.
 * echo - Whether to echo the menu or return it. Defaults to echo.
 *
 * @todo show_home - If you set this argument, then it will display the link to the home page. The show_home argument really just needs to be set to the value of the text of the link.
 *
 * @since 3.0.0
 *
 * @param array $args Arguments
 */
function wp_nav_menu($args = array())
{
    $defaults = array('menu' => '', 'container' => 'div', 'container_class' => '', 'menu_class' => 'menu', 'echo' => true, 'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'depth' => 0, 'walker' => '', 'context' => 'frontend');
    $args = wp_parse_args($args, $defaults);
    $args = apply_filters('wp_nav_menu_args', $args);
    $args = (object) $args;
    // Get the nav menu
    $menu = wp_get_nav_menu_object($args->menu);
    // If we couldn't find a menu based off the name, id or slug,
    // get the first menu that has items.
    if (!$menu) {
        $menus = wp_get_nav_menus();
        foreach ($menus as $menu_maybe) {
            if (wp_get_nav_menu_items($menu_maybe->term_id)) {
                $menu = $menu_maybe;
                break;
            }
        }
    }
    // If the menu exists, get it's items.
    if ($menu && !is_wp_error($menu)) {
        $menu_items = wp_get_nav_menu_items($menu->term_id, $args->context);
    }
    // If no menu was found or if the menu has no items, call the fallback_cb
    if (!$menu || is_wp_error($menu) || isset($menu_items) && empty($menu_items)) {
        if ('frontend' == $args->context && (function_exists($args->fallback_cb) || is_callable($args->fallback_cb))) {
            return call_user_func($args->fallback_cb, (array) $args);
        }
    }
    $nav_menu = '';
    $items = '';
    $container_allowedtags = apply_filters('wp_nav_menu_container_allowedtags', array('div', 'p', 'nav'));
    if (in_array($args->container, $container_allowedtags)) {
        $class = $args->container_class ? ' class="' . esc_attr($args->container_class) . '"' : ' class="menu-' . $menu->slug . '-container"';
        $nav_menu .= '<' . $args->container . $class . '>';
    }
    // Set up the $menu_item variables
    foreach ((array) $menu_items as $key => $menu_item) {
        $menu_items[$menu_item->menu_order] = wp_setup_nav_menu_item($menu_item, 'frontend');
    }
    $items .= walk_nav_menu_tree($menu_items, $args->depth, $args);
    // Attributes
    $attributes = ' id="menu-' . $menu->slug . '"';
    $attributes .= $args->menu_class ? ' class="' . $args->menu_class . '"' : '';
    $nav_menu .= '<ul' . $attributes . '>';
    // Allow plugins to hook into the menu to add their own <li>'s
    if ('frontend' == $args->context) {
        $items = apply_filters('wp_nav_menu_items', $items, $args);
        $items = apply_filters("wp_nav_menu_{$menu->slug}_items", $items, $args);
        $nav_menu .= $items;
    } else {
        $nav_menu .= $items;
    }
    $nav_menu .= '</ul>';
    if (in_array($args->container, $container_allowedtags)) {
        $nav_menu .= '</' . $args->container . '>';
    }
    $nav_menu = apply_filters('wp_nav_menu', $nav_menu, $args);
    if ($args->echo) {
        echo $nav_menu;
    } else {
        return $nav_menu;
    }
}
/**
 * Displays a navigation menu.
 *
 * Optional $args contents:
 *
 * menu - The menu that is desired.  Accepts (matching in order) id, slug, name. Defaults to blank.
 * menu_class - CSS class to use for the ul element which forms the menu. Defaults to 'menu'.
 * menu_id - The ID that is applied to the ul element which forms the menu. Defaults to the menu slug, incremented.
 * container - Whether to wrap the ul, and what to wrap it with. Defaults to 'div'.
 * container_class - the class that is applied to the container. Defaults to 'menu-{menu slug}-container'.
 * container_id - The ID that is applied to the container. Defaults to blank.
 * fallback_cb - If the menu doesn't exists, a callback function will fire. Defaults to 'wp_page_menu'. Set to false for no fallback.
 * before - Text before the link text.
 * after - Text after the link text.
 * link_before - Text before the link.
 * link_after - Text after the link.
 * echo - Whether to echo the menu or return it. Defaults to echo.
 * depth - how many levels of the hierarchy are to be included.  0 means all.  Defaults to 0.
 * walker - allows a custom walker to be specified.
 * theme_location - the location in the theme to be used.  Must be registered with register_nav_menu() in order to be selectable by the user.
 * items_wrap - How the list items should be wrapped. Defaults to a ul with an id and class. Uses printf() format with numbered placeholders.
 *
 * @since 3.0.0
 *
 * @param array $args Arguments
 */
function wp_nav_menu($args = array())
{
    static $menu_id_slugs = array();
    $defaults = array('menu' => '', 'container' => 'div', 'container_class' => '', 'container_id' => '', 'menu_class' => 'menu', 'menu_id' => '', 'echo' => true, 'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>', 'depth' => 0, 'walker' => '', 'theme_location' => '');
    $args = wp_parse_args($args, $defaults);
    $args = apply_filters('wp_nav_menu_args', $args);
    $args = (object) $args;
    // Get the nav menu based on the requested menu
    $menu = wp_get_nav_menu_object($args->menu);
    // Get the nav menu based on the theme_location
    if (!$menu && $args->theme_location && ($locations = get_nav_menu_locations()) && isset($locations[$args->theme_location])) {
        $menu = wp_get_nav_menu_object($locations[$args->theme_location]);
    }
    // get the first menu that has items if we still can't find a menu
    if (!$menu && !$args->theme_location) {
        $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;
                break;
            }
        }
    }
    // If the menu exists, get its items.
    if ($menu && !is_wp_error($menu) && !isset($menu_items)) {
        $menu_items = wp_get_nav_menu_items($menu->term_id);
    }
    // If no menu was found or if the menu has no items and no location was requested, call the fallback_cb if it exists
    if ((!$menu || is_wp_error($menu) || isset($menu_items) && empty($menu_items) && !$args->theme_location) && $args->fallback_cb && is_callable($args->fallback_cb)) {
        return call_user_func($args->fallback_cb, (array) $args);
    }
    // If no fallback function was specified and the menu doesn't exists, bail.
    if (!$menu || is_wp_error($menu)) {
        return false;
    }
    $nav_menu = $items = '';
    $show_container = false;
    if ($args->container) {
        $allowed_tags = apply_filters('wp_nav_menu_container_allowedtags', array('div', 'nav'));
        if (in_array($args->container, $allowed_tags)) {
            $show_container = true;
            $class = $args->container_class ? ' class="' . esc_attr($args->container_class) . '"' : ' class="menu-' . $menu->slug . '-container"';
            $id = $args->container_id ? ' id="' . esc_attr($args->container_id) . '"' : '';
            $nav_menu .= '<' . $args->container . $id . $class . '>';
        }
    }
    // Set up the $menu_item variables
    _wp_menu_item_classes_by_context($menu_items);
    $sorted_menu_items = array();
    foreach ((array) $menu_items as $key => $menu_item) {
        $sorted_menu_items[$menu_item->menu_order] = $menu_item;
    }
    unset($menu_items);
    $sorted_menu_items = apply_filters('wp_nav_menu_objects', $sorted_menu_items, $args);
    $items .= walk_nav_menu_tree($sorted_menu_items, $args->depth, $args);
    unset($sorted_menu_items);
    // Attributes
    if (!empty($args->menu_id)) {
        $wrap_id = $args->menu_id;
    } else {
        $wrap_id = 'menu-' . $menu->slug;
        while (in_array($wrap_id, $menu_id_slugs)) {
            if (preg_match('#-(\\d+)$#', $wrap_id, $matches)) {
                $wrap_id = preg_replace('#-(\\d+)$#', '-' . ++$matches[1], $wrap_id);
            } else {
                $wrap_id = $wrap_id . '-1';
            }
        }
    }
    $menu_id_slugs[] = $wrap_id;
    $wrap_class = $args->menu_class ? $args->menu_class : '';
    // Allow plugins to hook into the menu to add their own <li>'s
    $items = apply_filters('wp_nav_menu_items', $items, $args);
    $items = apply_filters("wp_nav_menu_{$menu->slug}_items", $items, $args);
    $nav_menu .= sprintf($args->items_wrap, esc_attr($wrap_id), esc_attr($wrap_class), $items);
    unset($items);
    if ($show_container) {
        $nav_menu .= '</' . $args->container . '>';
    }
    $nav_menu = apply_filters('wp_nav_menu', $nav_menu, $args);
    if ($args->echo) {
        echo $nav_menu;
    } else {
        return $nav_menu;
    }
}
/**
 * Build and populate the BuddyPress accordion on Appearance > Menus.
 *
 * @since 1.9.0
 *
 * @global $nav_menu_selected_id
 */
function bp_admin_do_wp_nav_menu_meta_box()
{
    global $nav_menu_selected_id;
    $walker = new BP_Walker_Nav_Menu_Checklist(false);
    $args = array('walker' => $walker);
    $post_type_name = 'buddypress';
    $tabs = array();
    $tabs['loggedin']['label'] = __('Logged-In', 'buddypress');
    $tabs['loggedin']['pages'] = bp_nav_menu_get_loggedin_pages();
    $tabs['loggedout']['label'] = __('Logged-Out', 'buddypress');
    $tabs['loggedout']['pages'] = bp_nav_menu_get_loggedout_pages();
    ?>

	<div id="buddypress-menu" class="posttypediv">
		<h4><?php 
    _e('Logged-In', 'buddypress');
    ?>
</h4>
		<p><?php 
    _e('<em>Logged-In</em> links are relative to the current user, and are not visible to visitors who are not logged in.', 'buddypress');
    ?>
</p>

		<div id="tabs-panel-posttype-<?php 
    echo $post_type_name;
    ?>
-loggedin" class="tabs-panel tabs-panel-active">
			<ul id="buddypress-menu-checklist-loggedin" class="categorychecklist form-no-clear">
				<?php 
    echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $tabs['loggedin']['pages']), 0, (object) $args);
    ?>
			</ul>
		</div>

		<h4><?php 
    _e('Logged-Out', 'buddypress');
    ?>
</h4>
		<p><?php 
    _e('<em>Logged-Out</em> links are not visible to users who are logged in.', 'buddypress');
    ?>
</p>

		<div id="tabs-panel-posttype-<?php 
    echo $post_type_name;
    ?>
-loggedout" class="tabs-panel tabs-panel-active">
			<ul id="buddypress-menu-checklist-loggedout" class="categorychecklist form-no-clear">
				<?php 
    echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $tabs['loggedout']['pages']), 0, (object) $args);
    ?>
			</ul>
		</div>

		<p class="button-controls">
			<span class="add-to-menu">
				<input type="submit"<?php 
    if (function_exists('wp_nav_menu_disabled_check')) {
        wp_nav_menu_disabled_check($nav_menu_selected_id);
    }
    ?>
 class="button-secondary submit-add-to-menu right" value="<?php 
    esc_attr_e('Add to Menu', 'buddypress');
    ?>
" name="add-custom-menu-item" id="submit-buddypress-menu" />
				<span class="spinner"></span>
			</span>
		</p>
	</div><!-- /#buddypress-menu -->

	<?php 
}
/**
 * Displays taxonomy metaboxes
 *
 * @since StartBox 2.5
 *
 * @param string $object Not used.
 * @param string $taxonomy The taxonomy object.
 */
function sb_sidebars_taxonomy_meta_box($post, $taxonomy)
{
    $taxonomy_name = $taxonomy['args']->name;
    $args = array('child_of' => 0, 'exclude' => '', 'hide_empty' => false, 'hierarchical' => 1, 'include' => '', 'include_last_update_time' => false, 'order' => 'ASC', 'orderby' => 'name', 'pad_counts' => false);
    $terms = get_terms($taxonomy_name, $args);
    $selected = (array) maybe_unserialize(get_post_meta($post->ID, '_tax', true));
    if (!$terms || is_wp_error($terms)) {
        echo '<p>' . __('No items.') . '</p>';
        return;
    }
    // Use a custom walker for displaying the taxonomy list
    $walker = new SB_Sidebars_Checklist();
    ?>
	<p><?php 
    printf(__('Select which %s should use this sidebar:'), $taxonomy['args']->label);
    ?>
</p>
	<div id="taxonomy-<?php 
    echo $taxonomy_name;
    ?>
" class="taxonomydiv">
		<div id="tabs-panel-<?php 
    echo $taxonomy_name;
    ?>
-all" class="tabs-panel tabs-panel-view-all tabs-panel-active">
			<ul id="<?php 
    echo $taxonomy_name;
    ?>
checklist" class="list:<?php 
    echo $taxonomy_name;
    ?>
 categorychecklist form-no-clear">
				<?php 
    echo '<li><label><input type="checkbox" ' . checked(in_array('all-' . $taxonomy['args']->rewrite['slug'], $selected), true, false) . ' name="tax[all-' . $taxonomy['args']->rewrite['slug'] . ']" value="true"/> All ' . $taxonomy['args']->label . ' (includes all future ' . $taxonomy['args']->label . ')</label></li>';
    $args['walker'] = $walker;
    echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $terms), 0, (object) $args);
    ?>
			</ul>
		</div><!-- /.tabs-panel -->

	</div><!-- /.taxonomydiv -->
	<?php 
}
        /**
         * Seiten hierarchisch auflisten
         *
         * @since 1.0
         * @author ppfeufer
         */
        private function _get_pages()
        {
            $var_sPostType = 'page';
            $args = array('order' => 'ASC', 'orderby' => 'title', 'posts_per_page' => '9999', 'post_type' => $var_sPostType, 'post_status' => 'publish', 'suppress_filters' => true, 'update_post_term_cache' => false, 'update_post_meta_cache' => false);
            $get_posts = new \WP_Query();
            $posts = $get_posts->query($args);
            if (!$get_posts->post_count || !$posts) {
                echo '<p>' . __('No items.', TWOCLICK_TEXTDOMAIN) . '</p>';
                return;
            }
            // END if(!$get_posts->post_count || !$posts)
            $db_fields = false;
            if (is_post_type_hierarchical($var_sPostType)) {
                $db_fields = array('parent' => 'post_parent', 'id' => 'ID');
            }
            // END if(is_post_type_hierarchical($var_sPostType))
            $walker = new Twoclick_Social_Media_Buttons_Pages_Walker($db_fields);
            $removed_args = array('action', 'customlink-tab', 'edit-menu-item', 'menu-item', 'page-tab', '_wpnonce');
            ?>
			<div class="posttypediv">
				<div id="<?php 
            echo $var_sPostType;
            ?>
-all" class="select-pages">
					<ul id="<?php 
            echo $var_sPostType;
            ?>
checklist" class="list:<?php 
            echo $var_sPostType;
            ?>
 categorychecklist form-no-clear">
						<?php 
            $args['walker'] = $walker;
            $posts = apply_filters('nav_menu_items_' . $var_sPostType, $posts, $args);
            $checkbox_items = walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $posts), 0, (object) $args);
            echo $checkbox_items;
            ?>
					</ul>
				</div>
			</div>
			<?php 
        }
function wp_nav_menu($args = array())
{
    static $menu_id_slugs = array();
    $defaults = array('menu' => '', 'container' => 'div', 'container_class' => '', 'container_id' => '', 'menu_class' => 'menu', 'menu_id' => '', 'echo' => true, 'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>', 'depth' => 0, 'walker' => '', 'theme_location' => '');
    $args = wp_parse_args($args, $defaults);
    $args = apply_filters('wp_nav_menu_args', $args);
    $args = (object) $args;
    $nav_menu = apply_filters('pre_wp_nav_menu', null, $args);
    // $nav_menu = null;
    if (null !== $nav_menu) {
        if ($args->echo) {
            echo $nav_menu;
            return;
        }
        return $nav_menu;
    }
    // Get the nav menu based on the requested menu
    // $menu = wp_get_nav_menu_object( $args->menu );
    $menu = wp_get_nav_menu_object($args->menu_id);
    // Get the nav menu based on the theme_location
    // if ( ! $menu && $args->theme_location && ( $locations = get_nav_menu_locations() ) && isset( $locations[ $args->theme_location ] ) )
    // $menu = wp_get_nav_menu_object( $locations[ $args->theme_location ] );
    if (!$menu && $args->theme_location) {
        $menu = wp_get_nav_menu_object($args->theme_location);
    }
    // get the first menu that has items if we still can't find a menu
    if (!$menu && !$args->theme_location) {
        $menus = wp_get_nav_menus();
        foreach ($menus as $menu_maybe) {
            if ($menu_items = wp_get_nav_menu_items($menu_maybe->term_id, array('update_post_term_cache' => false))) {
                $menu = $menu_maybe;
                break;
            }
        }
    }
    if (empty($args->menu)) {
        $args->menu = $menu;
    }
    // If the menu exists, get its items.
    if ($menu && !is_wp_error($menu) && !isset($menu_items)) {
        $menu_items = wp_get_nav_menu_items($menu->term_id, array('update_post_term_cache' => false));
    }
    $nav_menu = $items = '';
    // $show_container = false;
    // if ( $args->container ) {
    // 	$allowed_tags = apply_filters( 'wp_nav_menu_container_allowedtags', array( 'div', 'nav' ) );
    // 	if ( is_string( $args->container ) && in_array( $args->container, $allowed_tags ) ) {
    // 		$show_container = true;
    // 		$class = $args->container_class ? ' class="' . esc_attr( $args->container_class ) . '"' : ' class="menu-'. $menu->slug .'-container"';
    // 		$id = $args->container_id ? ' id="' . esc_attr( $args->container_id ) . '"' : '';
    // 		$nav_menu .= '<'. $args->container . $id . $class . '>';
    // 	}
    // }
    // Set up the $menu_item variables
    _wp_menu_item_classes_by_context($menu_items);
    $sorted_menu_items = $menu_items_with_children = array();
    foreach ((array) $menu_items as $menu_item) {
        $sorted_menu_items[$menu_item->menu_order] = $menu_item;
        if ($menu_item->menu_item_parent) {
            $menu_items_with_children[$menu_item->menu_item_parent] = true;
        }
    }
    // Add the menu-item-has-children class where applicable
    if ($menu_items_with_children) {
        foreach ($sorted_menu_items as &$menu_item) {
            if (isset($menu_items_with_children[$menu_item->ID])) {
                $menu_item->classes[] = 'menu-item-has-children';
            }
        }
    }
    unset($menu_items, $menu_item);
    $sorted_menu_items = apply_filters('wp_nav_menu_objects', $sorted_menu_items, $args);
    $items .= walk_nav_menu_tree($sorted_menu_items, $args->depth, $args);
    unset($sorted_menu_items);
    // Attributes
    if (!empty($args->menu_id)) {
        $wrap_id = $args->menu_id;
    } else {
        $wrap_id = 'menu-' . $menu->slug;
        while (in_array($wrap_id, $menu_id_slugs)) {
            if (preg_match('#-(\\d+)$#', $wrap_id, $matches)) {
                $wrap_id = preg_replace('#-(\\d+)$#', '-' . ++$matches[1], $wrap_id);
            } else {
                $wrap_id = $wrap_id . '-1';
            }
        }
    }
    $menu_id_slugs[] = $wrap_id;
    $wrap_class = $args->menu_class ? $args->menu_class : '';
    $items = apply_filters('wp_nav_menu_items', $items, $args);
    $items = apply_filters("wp_nav_menu_{$menu->slug}_items", $items, $args);
    // Don't print any markup if there are no items at this point.
    if (empty($items)) {
        return false;
    }
    $nav_menu .= sprintf($args->items_wrap, esc_attr($wrap_id), esc_attr($wrap_class), $items);
    unset($items);
    if ($show_container) {
        $nav_menu .= '</' . $args->container . '>';
    }
    $nav_menu = apply_filters('wp_nav_menu', $nav_menu, $args);
    if ($args->echo) {
        echo $nav_menu;
    } else {
        return $nav_menu;
    }
}
/**
 * Displays a navigation menu.
 *
 * @since 3.0.0
 *
 * @param array $args {
 *     Optional. Array of nav menu arguments.
 *
 *     @type string        $menu            Desired menu. Accepts (matching in order) id, slug, name. Default empty.
 *     @type string        $menu_class      CSS class to use for the ul element which forms the menu. Default 'menu'.
 *     @type string        $menu_id         The ID that is applied to the ul element which forms the menu.
 *                                          Default is the menu slug, incremented.
 *     @type string        $container       Whether to wrap the ul, and what to wrap it with. Default 'div'.
 *     @type string        $container_class Class that is applied to the container. Default 'menu-{menu slug}-container'.
 *     @type string        $container_id    The ID that is applied to the container. Default empty.
 *     @type callback|bool $fallback_cb     If the menu doesn't exists, a callback function will fire.
 *                                          Default is 'wp_page_menu'. Set to false for no fallback.
 *     @type string        $before          Text before the link text. Default empty.
 *     @type string        $after           Text after the link text. Default empty.
 *     @type string        $link_before     Text before the link. Default empty.
 *     @type string        $link_after      Text after the link. Default empty.
 *     @type bool          $echo            Whether to echo the menu or return it. Default true.
 *     @type int           $depth           How many levels of the hierarchy are to be included. 0 means all. Default 0.
 *     @type object        $walker          Instance of a custom walker class. Default empty.
 *     @type string        $theme_location  Theme location to be used. Must be registered with register_nav_menu()
 *                                          in order to be selectable by the user.
 *     @type string        $items_wrap      How the list items should be wrapped. Default is a ul with an id and class.
 *                                          Uses printf() format with numbered placeholders.
 * }
 * @return mixed Menu output if $echo is false, false if there are no items or no menu was found.
 */
function wp_nav_menu($args = array())
{
    static $menu_id_slugs = array();
    $defaults = array('menu' => '', 'container' => 'div', 'container_class' => '', 'container_id' => '', 'menu_class' => 'menu', 'menu_id' => '', 'echo' => true, 'fallback_cb' => 'wp_page_menu', 'before' => '', 'after' => '', 'link_before' => '', 'link_after' => '', 'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>', 'depth' => 0, 'walker' => '', 'theme_location' => '');
    $args = wp_parse_args($args, $defaults);
    /**
     * Filter the arguments used to display a navigation menu.
     *
     * @since 3.0.0
     *
     * @see wp_nav_menu()
     *
     * @param array $args Array of wp_nav_menu() arguments.
     */
    $args = apply_filters('wp_nav_menu_args', $args);
    $args = (object) $args;
    /**
     * Filter whether to short-circuit the wp_nav_menu() output.
     *
     * Returning a non-null value to the filter will short-circuit
     * wp_nav_menu(), echoing that value if $args->echo is true,
     * returning that value otherwise.
     *
     * @since 3.9.0
     *
     * @see wp_nav_menu()
     *
     * @param string|null $output Nav menu output to short-circuit with. Default null.
     * @param object      $args   An object containing wp_nav_menu() arguments.
     */
    $nav_menu = apply_filters('pre_wp_nav_menu', null, $args);
    if (null !== $nav_menu) {
        if ($args->echo) {
            echo $nav_menu;
            return;
        }
        return $nav_menu;
    }
    // Get the nav menu based on the requested menu
    $menu = wp_get_nav_menu_object($args->menu);
    // Get the nav menu based on the theme_location
    if (!$menu && $args->theme_location && ($locations = get_nav_menu_locations()) && isset($locations[$args->theme_location])) {
        $menu = wp_get_nav_menu_object($locations[$args->theme_location]);
    }
    // get the first menu that has items if we still can't find a menu
    if (!$menu && !$args->theme_location) {
        $menus = wp_get_nav_menus();
        foreach ($menus as $menu_maybe) {
            if ($menu_items = wp_get_nav_menu_items($menu_maybe->term_id, array('update_post_term_cache' => false))) {
                $menu = $menu_maybe;
                break;
            }
        }
    }
    // If the menu exists, get its items.
    if ($menu && !is_wp_error($menu) && !isset($menu_items)) {
        $menu_items = wp_get_nav_menu_items($menu->term_id, array('update_post_term_cache' => false));
    }
    /*
     * If no menu was found:
     *  - Fall back (if one was specified), or bail.
     *
     * If no menu items were found:
     *  - Fall back, but only if no theme location was specified.
     *  - Otherwise, bail.
     */
    if ((!$menu || is_wp_error($menu) || isset($menu_items) && empty($menu_items) && !$args->theme_location) && $args->fallback_cb && is_callable($args->fallback_cb)) {
        return call_user_func($args->fallback_cb, (array) $args);
    }
    if (!$menu || is_wp_error($menu)) {
        return false;
    }
    $nav_menu = $items = '';
    $show_container = false;
    if ($args->container) {
        /**
         * Filter the list of HTML tags that are valid for use as menu containers.
         *
         * @since 3.0.0
         *
         * @param array $tags The acceptable HTML tags for use as menu containers.
         *                    Default is array containing 'div' and 'nav'.
         */
        $allowed_tags = apply_filters('wp_nav_menu_container_allowedtags', array('div', 'nav'));
        if (in_array($args->container, $allowed_tags)) {
            $show_container = true;
            $class = $args->container_class ? ' class="' . esc_attr($args->container_class) . '"' : ' class="menu-' . $menu->slug . '-container"';
            $id = $args->container_id ? ' id="' . esc_attr($args->container_id) . '"' : '';
            $nav_menu .= '<' . $args->container . $id . $class . '>';
        }
    }
    // Set up the $menu_item variables
    _wp_menu_item_classes_by_context($menu_items);
    $sorted_menu_items = $menu_items_with_children = array();
    foreach ((array) $menu_items as $menu_item) {
        $sorted_menu_items[$menu_item->menu_order] = $menu_item;
        if ($menu_item->menu_item_parent) {
            $menu_items_with_children[$menu_item->menu_item_parent] = true;
        }
    }
    // Add the menu-item-has-children class where applicable
    if ($menu_items_with_children) {
        foreach ($sorted_menu_items as &$menu_item) {
            if (isset($menu_items_with_children[$menu_item->ID])) {
                $menu_item->classes[] = 'menu-item-has-children';
            }
        }
    }
    unset($menu_items, $menu_item);
    /**
     * Filter the sorted list of menu item objects before generating the menu's HTML.
     *
     * @since 3.1.0
     *
     * @param array  $sorted_menu_items The menu items, sorted by each menu item's menu order.
     * @param object $args              An object containing wp_nav_menu() arguments.
     */
    $sorted_menu_items = apply_filters('wp_nav_menu_objects', $sorted_menu_items, $args);
    $items .= walk_nav_menu_tree($sorted_menu_items, $args->depth, $args);
    unset($sorted_menu_items);
    // Attributes
    if (!empty($args->menu_id)) {
        $wrap_id = $args->menu_id;
    } else {
        $wrap_id = 'menu-' . $menu->slug;
        while (in_array($wrap_id, $menu_id_slugs)) {
            if (preg_match('#-(\\d+)$#', $wrap_id, $matches)) {
                $wrap_id = preg_replace('#-(\\d+)$#', '-' . ++$matches[1], $wrap_id);
            } else {
                $wrap_id = $wrap_id . '-1';
            }
        }
    }
    $menu_id_slugs[] = $wrap_id;
    $wrap_class = $args->menu_class ? $args->menu_class : '';
    /**
     * Filter the HTML list content for navigation menus.
     *
     * @since 3.0.0
     *
     * @see wp_nav_menu()
     *
     * @param string $items The HTML list content for the menu items.
     * @param object $args  An object containing wp_nav_menu() arguments.
     */
    $items = apply_filters('wp_nav_menu_items', $items, $args);
    /**
     * Filter the HTML list content for a specific navigation menu.
     *
     * @since 3.0.0
     *
     * @see wp_nav_menu()
     *
     * @param string $items The HTML list content for the menu items.
     * @param object $args  An object containing wp_nav_menu() arguments.
     */
    $items = apply_filters("wp_nav_menu_{$menu->slug}_items", $items, $args);
    // Don't print any markup if there are no items at this point.
    if (empty($items)) {
        return false;
    }
    $nav_menu .= sprintf($args->items_wrap, esc_attr($wrap_id), esc_attr($wrap_class), $items);
    unset($items);
    if ($show_container) {
        $nav_menu .= '</' . $args->container . '>';
    }
    /**
     * Filter the HTML content for navigation menus.
     *
     * @since 3.0.0
     *
     * @see wp_nav_menu()
     *
     * @param string $nav_menu The HTML content for the navigation menu.
     * @param object $args     An object containing wp_nav_menu() arguments.
     */
    $nav_menu = apply_filters('wp_nav_menu', $nav_menu, $args);
    if ($args->echo) {
        echo $nav_menu;
    } else {
        return $nav_menu;
    }
}
Exemple #26
0
function wplms_admin_do_wp_nav_menu_meta_box()
{
    global $nav_menu_selected_id;
    $walker = new WPLMS_backend_menu(false);
    $args = array('walker' => $walker);
    $post_type_name = 'wplms';
    $tabs = array();
    $tabs['membersonly']['label'] = __('Members-Only', 'vibe');
    $tabs['membersonly']['pages'] = wplms_nav_menu_get_members_pages();
    $tabs['instructorsonly']['label'] = __('Instructors-Only', 'vibe');
    $tabs['instructorsonly']['pages'] = wplms_nav_menu_get_instructors_pages();
    ?>

    <div id="wplms-menu" class="posttypediv">
      <h4><?php 
    _e('Members-Only', 'vibe');
    ?>
</h4>
      <p><?php 
    _e('<em>Members-Only</em> These links are only visible to logged in users.', 'vibe');
    ?>
</p>

      <div id="tabs-panel-posttype-<?php 
    echo $post_type_name;
    ?>
-loggedin" class="tabs-panel tabs-panel-active">
        <ul id="wplms-menu-checklist-loggedin" class="categorychecklist form-no-clear">
          <?php 
    echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $tabs['membersonly']['pages']), 0, (object) $args);
    ?>
        </ul>
      </div>

      <h4><?php 
    _e('Instructors-Only', 'vibe');
    ?>
</h4>
      <p><?php 
    _e('<em>Instructors-Only</em> links are visible to Instructors.', 'vibe');
    ?>
</p>

      <div id="tabs-panel-posttype-<?php 
    echo $post_type_name;
    ?>
-loggedout" class="tabs-panel tabs-panel-active">
        <ul id="buddypress-menu-checklist-loggedout" class="categorychecklist form-no-clear">
          <?php 
    echo walk_nav_menu_tree(array_map('wp_setup_nav_menu_item', $tabs['instructorsonly']['pages']), 0, (object) $args);
    ?>
        </ul>
      </div>

      <p class="button-controls">
        <span class="add-to-menu">
          <input type="submit"<?php 
    if (function_exists('wp_nav_menu_disabled_check')) {
        wp_nav_menu_disabled_check($nav_menu_selected_id);
    }
    ?>
 class="button-secondary submit-add-to-menu right" value="<?php 
    esc_attr_e('Add to Menu', 'vibe');
    ?>
" name="add-custom-menu-item" id="submit-wplms-menu" />
          <span class="spinner"></span>
        </span>
      </p>
    </div><!-- /#buddypress-menu -->

    <?php 
}
Exemple #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;
    }
}
 function avia_ajax_switch_menu_walker()
 {
     if (!current_user_can('edit_theme_options')) {
         die('-1');
     }
     check_ajax_referer('add-menu_item', 'menu-settings-column-nonce');
     require_once ABSPATH . 'wp-admin/includes/nav-menu.php';
     $item_ids = wp_save_nav_menu_items(0, $_POST['menu-item']);
     if (is_wp_error($item_ids)) {
         die('-1');
     }
     foreach ((array) $item_ids as $menu_item_id) {
         $menu_obj = get_post($menu_item_id);
         if (!empty($menu_obj->ID)) {
             $menu_obj = wp_setup_nav_menu_item($menu_obj);
             $menu_obj->label = $menu_obj->title;
             // don't show "(pending)" in ajax-added items
             $menu_items[] = $menu_obj;
         }
     }
     if (!empty($menu_items)) {
         $args = array('after' => '', 'before' => '', 'link_after' => '', 'link_before' => '', 'walker' => new avia_backend_walker());
         echo walk_nav_menu_tree($menu_items, 0, (object) $args);
     }
     die('end');
 }
 /**
  * Zpracování metaboxu pro archivy post typů v menu
  * NENÍ POTŘEBA VOLAT VEŘEJNĚ
  *
  * @author Martin Hlaváč
  * @link http://www.ktstudio.cz
  *
  * @param string $html
  */
 public function postArchivesMenuMetaBoxCallBack()
 {
     $postTypes = get_post_types(array("show_in_nav_menus" => true, "has_archive" => true), "object");
     if (KT::arrayIssetAndNotEmpty($postTypes)) {
         foreach ($postTypes as $postType) {
             $postType->classes = array();
             $postType->type = "custom";
             //$postType->name;
             $postType->object_id = $postType->name;
             $postType->title = $postType->labels->name;
             $postType->description = $postType->labels->name;
             $postType->object = self::POST_TYPE_ARCHIVE_OBJECT_KEY;
             $postType->menu_item_parent = null;
             $postType->parent = null;
             $postType->db_id = null;
             $postType->url = get_post_type_archive_link($postType->name);
             $postType->target = null;
             $postType->attr_title = $postType->labels->name;
             $postType->xfn = null;
         }
         $walker = new Walker_Nav_Menu_Checklist(array());
         KT::theTabsIndent(0, "<div id=\"kt-archive\" class=\"posttypediv\">", true);
         KT::theTabsIndent(1, "<div id=\"tabs-panel-kt-archive\" class=\"tabs-panel tabs-panel-active\">", true);
         KT::theTabsIndent(2, "<ul id=\"kt-archive-checklist\" class=\"categorychecklist form-no-clear\">", true);
         KT::theTabsIndent(3, walk_nav_menu_tree(array_map("wp_setup_nav_menu_item", $postTypes), 0, (object) array("walker" => $walker)), true);
         KT::theTabsIndent(2, "</ul>", true);
         KT::theTabsIndent(1, "</div>", true);
         KT::theTabsIndent(0, "</div>", true, true);
         $addMenuTitle = htmlspecialchars(__("Přidat do menu", "KT_CORE_DOMAIN"));
         KT::theTabsIndent(0, "<p class=\"button-controls\">", true);
         KT::theTabsIndent(1, "<span class=\"add-to-menu\">", true);
         KT::theTabsIndent(2, "<input type=\"submit\" id=\"submit-kt-archive\" name=\"kt-add-archive-menu-item\" class=\"button-secondary submit-add-to-menu\" value=\"{$addMenuTitle}\" />", true);
         KT::theTabsIndent(1, "</span>", true);
         KT::theTabsIndent(0, "</p>", true, true);
     } else {
         KT::theTabsIndent(0, KT_EMPTY_SYMBOL, true, true);
     }
 }
Exemple #30
0
     $item_ids = wp_save_nav_menu_items(0, $menu_items_data);
     if (is_wp_error($item_ids)) {
         die('-1');
     }
     foreach ((array) $item_ids as $menu_item_id) {
         $menu_obj = get_post($menu_item_id);
         if (!empty($menu_obj->ID)) {
             $menu_obj = wp_setup_nav_menu_item($menu_obj);
             $menu_obj->label = $menu_obj->title;
             // don't show "(pending)" in ajax-added items
             $menu_items[] = $menu_obj;
         }
     }
     if (!empty($menu_items)) {
         $args = array('after' => '', 'before' => '', 'link_after' => '', 'link_before' => '', 'walker' => new Walker_Nav_Menu_Edit());
         echo walk_nav_menu_tree($menu_items, 0, (object) $args);
     }
     break;
 case 'add-meta':
     check_ajax_referer('add-meta', '_ajax_nonce-add-meta');
     $c = 0;
     $pid = (int) $_POST['post_id'];
     $post = get_post($pid);
     if (isset($_POST['metakeyselect']) || isset($_POST['metakeyinput'])) {
         if (!current_user_can('edit_post', $pid)) {
             die('-1');
         }
         if (isset($_POST['metakeyselect']) && '#NONE#' == $_POST['metakeyselect'] && empty($_POST['metakeyinput'])) {
             die('1');
         }
         if ($post->post_status == 'auto-draft') {