我正在开发一个wordpress网站,我希望有两个网站实例,一个是英文版,另一个是德文版。我的目标是当用户访问我的网站时,用户将根据他/她的浏览器语言重定向到正确的语言。但我想只用一个wordpress安装来做到这一点。我可以复制页面(一个用英语,另一个用德语),通过将主页设置为页面模板来复制主页。我的问题是菜单。如何为不同的页面设置不同的菜单?
答案 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;
}
?>
答案 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.php
和header-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()
调用,按上述方式转换它们。我真的不希望这个答案很长,但我希望它有所帮助!