2

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

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

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

知道我在这里做错了什么吗?


编辑


创建和后的新front-page.php代码:nl.phpde.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'); 
    }

?>
4

2 回答 2

1

正如您所提到的,文档指出:

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

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

  • 创建一个将由 front-page.php 使用的页面
  • 在页面编辑器中,您可以通过单击语言框下的 + 符号来添加另一种语言的页面
  • 您可能希望首页没有页面 URL,因此为避免这种情况,请转到语言 > 设置 > URL 修改并添加一个复选框到首页 url 包含语言代码而不是页面名称或页面 ID

更新

也许您可以使用类似于此处的代码来检查当前语言是什么,然后使用get_template_part函数来加载适当的模板。

更新 2

而不是get_bloginfo('language'),尝试使用此处pll_current_language找到的 polylang 函数:

pll_current_language($value);

'$value' => (可选)'name' 或 'locale' 或 'slug',默认为 'slug'</p>

返回全名或 WordPress 语言环境(就像 WordPress 核心函数 'get_locale' 或当前语言的 slug(2 字母代码))。

于 2017-07-14T10:17:43.743 回答
0

您只需要创建一个文件,这将是您需要的模板。编辑页面时,“语言”部分将出现在管理面板中。在本节中,您将能够编辑其他语言的页面。

于 2021-09-23T12:19:01.853 回答