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