Wordpress Polylang多语言静态front-page.php

时间:2017-07-13 13:50:58

标签: wordpress multilingual polylang

寻找有多语言网站经验的人,也许还有Polylang插件。

根据文档,可以使用静态首页: “你必须为每种语言创建一个页面。像往常一样设置翻译,然后转到WordPress的”阅读设置“面板。选中”首页显示静态页面“,然后选择刚刚创建的页面之一(语言没有'如果您使用帖子,请对帖子页面执行相同操作。“

我已经完成了所有这些,为德语版本创建了第二个模板front-page-de.php,我在用于首页的德语版本的页面中使用了它。当我查看我的页面概述时,我看到原始版本和德语版本都被Wordpress标记为Front Page。但是,当我使用语言切换器切换到德语时,该站点将继续使用原始front-page.php

知道我在这里做错了吗?

修改

创建front-page.phpnl.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'); 
    }

?>

1 个答案:

答案 0 :(得分:0)

如您所述,文档说明:

  

您必须为每种语言创建一个页面。像往常一样设置翻译   然后转到WordPress ......

由于它提到“创建页面”而不是“创建模板”,我假设您不创建模板,您只需要:

  • 创建一个将由front-page.php
  • 使用的页面
  • 在页面编辑器中,通过单击“语言框”
  • 下的+号添加另一种语言的页面
  • 您可能希望首页没有网页网址,因此要避免使用,请转到语言&gt;设置&gt;网址修改并向添加复选框首页网址包含语言代码,而不是网页名称或网页ID

<强>更新

也许您可以使用代码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字母代码)   目前的语言。