寻找有多语言网站经验的人,也许还有Polylang插件。
根据文档,可以使用静态首页: “你必须为每种语言创建一个页面。像往常一样设置翻译,然后转到WordPress的”阅读设置“面板。选中”首页显示静态页面“,然后选择刚刚创建的页面之一(语言没有'如果您使用帖子,请对帖子页面执行相同操作。“
我已经完成了所有这些,为德语版本创建了第二个模板front-page-de.php
,我在用于首页的德语版本的页面中使用了它。当我查看我的页面概述时,我看到原始版本和德语版本都被Wordpress标记为Front Page。但是,当我使用语言切换器切换到德语时,该站点将继续使用原始front-page.php
。
知道我在这里做错了吗?
修改
创建front-page.php
和nl.php
之后新的de.php
代码:
<?php
/**
* Template Name: Front Page Template
*/
$currentLanguage = get_bloginfo('language');
// Replace this condition with language code, ex : en-US
if ( $currentLanguage == "nl-NL" )
get_template_part('nl');
$currentLanguage = get_bloginfo('language');
// Replace this condition with language code, ex : en-US
if ( $currentLanguage == "de_DE" )
get_template_part('de');
?>
我想知道我是否必须做else
条件,但是当我没有使用花括号{}时我不知道怎么做。
我从上面得到了上述代码:
获取特定文件
虽然这种功能失败了,但它也是如此 可以用它加载特定的模板文件。所有你需要做的 只使用一个参数:
<?php get_template_part('template-parts/layout'); ?>
将包含来自template-parts子目录中的layout.php 主题文件夹的根目录。 (https://developer.wordpress.org/reference/functions/get_template_part/)
由于新模板不在任何特定的子文件夹中,因此我没有包含目录的“模板部分”部分。
编辑2
<?php
/**
* Template Name: Front Page Template
*/
$currentLanguage = get_bloginfo('language');
if ( $currentLanguage == "nl-NL" ) {
get_template_part('nl');
}
else {
get_template_part('de');
}
?>
编辑3
<?php
/**
* Template Name: Front Page Template
*/
$currentLanguage = pll_current_language();
if ( $currentLanguage == "nl-NL" ) {
get_template_part('nl');
}
else {
get_template_part('de');
}
?>
答案 0 :(得分:0)
如您所述,文档说明:
您必须为每种语言创建一个页面。像往常一样设置翻译 然后转到WordPress ......
由于它提到“创建页面”而不是“创建模板”,我假设您不创建模板,您只需要:
<强>更新强>
也许您可以使用代码here之类的内容来检查当前语言是什么,然后使用get_template_part函数加载相应的模板。
更新2
而不是get_bloginfo('language')
,尝试使用找到here的polylang函数pll_current_language
:
pll_current_language($value);
'$ value'=&gt; (可选)'name'或'locale'或'slug',默认值 'slug'
返回全名或WordPress语言环境(就像 WordPress核心函数'get_locale'或slug(2字母代码) 目前的语言。