Change menu with language?

时间:2013-08-12 作者:user36511

我的问题是,我使用了一个名为polylang的插件,但现在它与另一个更重要的插件不兼容,所以我需要找到一个解决方案。我在其他网站上使用WPML,这不是一个选项,所以您知道。

我已经准备好翻译所有的帖子和页面,我只想使用一个瑞典语菜单和一个英语菜单。permalinks没有任何变化。

我在这篇文章中找到了一个解决方案How to change menu according to the language? 但我不能让它工作。不确定帖子是否仍处于活动状态,或者解决方案是否与WP 3.6配合使用,因此我再次请求任何帮助。

这是哈利法克斯主题的菜单代码

从页眉

<?php wp_nav_menu( array( \'container_id\' => \'submenu\', \'theme_location\' => \'primary\',\'menu_id\'=>\'web2feel\' ,\'menu_class\'=>\'sfmenu\',\'fallback_cb\'=> \'fallbackmenu\' ) ); ?>
函数中的代码。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>

1 个回复
SO网友:user36511

解决方法是add_meta_box 在里面functions.php. 这是我的代码:

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

    }

}
在中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\' ) ); 

}

结束

相关推荐

Admin menus and submenus

我为管理员创建了一个选项页面,并将其显示为顶级菜单->add_menu_page($themename, $themename, \'administrator\', basename(__FILE__), \'mytheme_admin\');我想在我创建的顶级菜单下添加一个子菜单,以显示完全相同的页面(显示为子菜单,但当用户单击顶级菜单时也会打开此页面)。此外,我不知道如何在这个顶级菜单下添加我创建的另一个主题页面。在这里询问之前,我已经阅读了wordpress文档,但无法完成。非常感谢。