The Problem with your code is that its not actually adding the links to the menu and only to the menu’s output, hence the use of a filter (add_filter) so you are just filtering the output of the menu in fact even if you don’t have a menu your link will be shown with the code you are using. But to create a link and add it to a menu you can use this code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $run_once = get_option('menu_check'); if (!$run_once){ //give your menu a name $name = 'theme default menu'; //create the menu $menu_id = wp_create_nav_menu($name); //then get the menu object by its name $menu = get_term_by( 'name', $name, 'nav_menu' ); //then add the actuall link/ menu item and you do this for each item you want to add wp_update_nav_menu_item($menu->term_id, 0, array( 'menu-item-title' => __('Home'), 'menu-item-classes' => 'home', 'menu-item-url' => home_url( '/' ), 'menu-item-status' => 'publish')); //then you set the wanted theme location $locations = get_theme_mod('nav_menu_locations'); $locations['main-menu'] = $menu->term_id; set_theme_mod( 'nav_menu_locations', $locations ); // then update the menu_check option to make sure this code only runs once update_option('menu_check', true); } |
If you like this question & answer and want to contribute, then write your question & answer and email to freewebmentor[@]gmail.com. Your question and answer will appear on FreeWebMentor.com and help other developers.