web-dev-qa-db-fra.com

Changer de menu avec la langue?

Mon problème est que j’ai utilisé un plugin appelé polylang et que maintenant il ne fonctionne pas avec un autre plugin plus important, j’ai donc besoin de trouver une solution. J'utilise WPML sur d'autres sites et ce n'est pas une option ici, donc vous savez.

J'ai déjà traduit tous les articles et pages et je veux juste utiliser un menu en suédois et un en anglais. Aucun changement dans les permaliens quoi que ce soit.

J'ai trouvé une solution dans ce post Comment changer de menu en fonction de la langue? mais je ne peux pas le faire fonctionner. Pas sûr que post soit toujours actif ou que la solution fonctionne avec WP 3.6, je vous redemande de l'aide.

Ceci est le code de menu du thème halifax

de l'en-tête

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

code de la functions.php

    register_nav_menus( array(
        'primary' => __( 'Primary Navigation', '' ),
    ) );

function fallbackmenu(){ ?>
            <div id="submenu">
                <ul><li> Go to Adminpanel > Appearance > Menus to create your menu. You should have WP 3.0+ version for custom menus to work.</li></ul>
            </div>
3
user36511

Résolu avec add_meta_box dans functions.php. Voici mon 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));

    }

}

Dans 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' ) ); 

}
1
user36511