Skip to content

Instantly share code, notes, and snippets.

@daithi-coombes
Created April 22, 2014 20:42
Show Gist options
  • Save daithi-coombes/11193573 to your computer and use it in GitHub Desktop.
Save daithi-coombes/11193573 to your computer and use it in GitHub Desktop.
dynamically create wordpress menu
/**
* Credit from here: @http://wordpress.stackexchange.com/questions/50168/how-do-i-create-predefined-menus-for-my-theme/50332#50332
*/
function register_my_menus() {
$menus = array(
'Main menu' => array(
'slug' => 'main-menu',
'menu_items' => array(
'Home' => site_url(),
'Search' => site_url('/search/'),
'Online now' => site_url('online-now'),
'Video Chat' => site_url('/video-chat/'),
'Galleries' => site_url('/galleries/'),
'Forums' => site_url('/forums/'),
'Live cams' => site_url('/live-cams/')
)
)
);
foreach($menus as $menu_title => $menu_var) {
register_nav_menu( $menu_var['slug'], $menu_title );
if( !is_nav_menu($menu_title) ) {
$menu_id = wp_create_nav_menu( $menu_title );
$locations = get_theme_mod('nav_menu_locations');
$locations[$menu_var['slug']] = $menu_id;
set_theme_mod( 'nav_menu_locations', $locations );
foreach( $menu_var['menu_items'] as $menu_item_name => $menu_item_url ) {
$item = array (
'menu-item-type' => 'custom',
'menu-item-url' => $menu_item_url,
'menu-item-title' => $menu_item_name,
'menu-item-status' => 'publish'
);
wp_update_nav_menu_item( $menu_id, 0, $item );
}
}
}
}
add_action( 'init', 'register_my_menus' );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment