Change menu with language?

Solved it with add_meta_box in functions.php. Here is my code:

add_action( 'add_meta_boxes', 'my_custom_box' );

function my_custom_box(){

    if ( function_exists('add_meta_box') ) {

        add_meta_box( 'page_custom_menu','page-menu', 'page_custom_menu_box', 'page', 'side','high');
        add_meta_box('page_custom_menu','page-menu', 'page_custom_menu_box', 'post', 'side', 'high');

    }

}

function page_custom_menu_box(){

    global $post;



    if ( metadata_exists( 'post', $post->ID, 'page_menu' ) ) {

        $menu_id = get_post_meta( $post->ID, 'page_menu', true );

    } 



    $entries = get_terms( 'nav_menu', array( 'hide_empty' => false ) );

    echo '<select class="postform" id="page_menu" name="page_menu"> ';

    echo '<option value="">Select...</option>  ';

    foreach ($entries as $key => $entry){

        $id = $entry->term_id;

        $title = $entry->name;

        if ( $id == $menu_id ){

            $selected = "selected='selected'";  

        }else{

            $selected = "";     

        }

        echo"<option $selected value="". $id."">". $title."</option>";

    }

    echo '</select>';

}



add_action('save_post', 'save_postdata');

function save_postdata( $post_id ) {   

    global $post;

    if( !isset($_POST['page_menu']) )

        return;

    $data = $_POST['page_menu'];

    if(get_post_meta($post_id, 'page_menu') == "") { 

       add_post_meta($post_id, 'page_menu', $data, true);

    }elseif($data != get_post_meta($post_id, 'page_menu', true)) { 

        update_post_meta($post_id, 'page_menu', $data);     

    }elseif($data == "")  { 

       delete_post_meta($post_id, 'page_menu', get_post_meta($post_id, 'page_menu', true));

    }

}

In header.php:

    if( is_page() && get_post_meta( $post->ID, 'page_menu', true )!='' ){

    global $post;

    $menu_id = get_post_meta( $post->ID, 'page_menu', true );

    wp_nav_menu( array( 'container_id' => 'submenu', 'menu' => $menu_id ) );

}elseif( is_single() && get_post_meta( $post->ID, 'page_menu', true )!='' ){

    global $post;

    $menu_id = get_post_meta( $post->ID, 'page_menu', true );

    wp_nav_menu( array( 'container_id' => 'submenu', 'menu' => $menu_id ) );

}else{

    //default menu

    wp_nav_menu( array( 'container_id' => 'submenu', 'theme_location' => 'primary','menu_id'=>'web2feel' ,'menu_class'=>'sfmenu','fallback_cb'=> 'fallbackmenu' ) ); 

}

Leave a Comment

tech