双语Wordpress网站

时间:2016-07-14 16:11:46

标签: php wordpress multilingual

我正在开发一个wordpress网站,我希望有两个网站实例,一个是英文版,另一个是德文版。我的目标是当用户访问我的网站时,用户将根据他/她的浏览器语言重定向到正确的语言。但我想只用一个wordpress安装来做到这一点。我可以复制页面(一个用英语,另一个用德语),通过将主页设置为页面模板来复制主页。我的问题是菜单。如何为不同的页面设置不同的菜单?

2 个答案:

答案 0 :(得分:1)

您可以使用WPML之类的插件来实现此目的,但如果您不想使用插件,则可以编辑header.php并根据浏览器语言添加加载菜单的条件。

e.g。

<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
switch ($lang){
    case "en":
        //display english menu
        break;
    case "de":
        //display german menu
        break;     
    default:
        //default to english or german menu
        break;
}
?>

以上代码取自:Detect Browser Language in PHP

答案 1 :(得分:1)

您需要注册一个新的导航菜单,并将其添加到您用于德语页面的模板中,然后创建一个新的标题模板,然后设置模板以使用该新标题。以下是执行此操作所需的步骤:

注册菜单

在您的主题functions.php中,您需要在文件末尾添加这样的代码:

function register_german_menu() {
  register_nav_menu('german_menu',__( 'German Menu' ));
}
add_action( 'init', 'register_german_menu' );

这样做告诉Wordpress你想要在Appearance&gt;中为自定义菜单添加一个新位置。菜单页面。您现在应该可以在菜单中添加项目,但它们不会在任何地方显示。

创建一些页面模板

您必须为站点的德语部分创建一组页面模板。您需要一个新的page.php和一个新的header.php模板。我建议分别调用这些page-german.phpheader-german.php。对于page-german.php,请将page.php模板复制粘贴到page-german.php,然后在page-german.php的顶部添加此评论:

<?php /* Template Name: German Page Template */ ?>

这告诉WordPress将其识别为页面模板,并告诉它它的名称。这使得模板可以在每个单独的页面上选择。

现在,您需要制作标题模板。将header.php模板复制粘贴到header-german.php。在这个新模板中,查找类似于

的行
wp_nav_menu(array('theme_location'=>'something'))

并将其更改为:

wp_nav_menu(array('theme_location'=>'german_menu'))

这将显示德语菜单,而不是常规菜单。

现在,返回page-german.php并查找看起来像这样的行:

<?php get_header(); ?>

并将其更改为:

<?php get_header('german'); ?>

这告诉Wordpress,在此页面上,您希望使用header-german.php文件生成标头而不是header.php

设置页面模板和菜单

首先,转到外观&gt;菜单选项卡,然后创建一个新菜单,然后将该新菜单分配到插槽“德语菜单”。然后,您需要浏览站点的所有德语页面,并在编辑时在右侧栏中将页面模板设置为“德语页面模板”。现在,使用新模板的页面将显示德语菜单而不是英语菜单!

此外?

如果您有其他需要转换的模板,则可以通过制作副本并更改get_header()调用,按上述方式转换它们。我真的不希望这个答案很长,但我希望它有所帮助!