【问题标题】:Wordpress Polylang multi-language static front-page.phpWordpress Polylang 多语言静态front-page.php
【发布时间】:2017-12-18 08:34:21
【问题描述】:

寻找具有多语言网站和 Polylang 插件经验的人。

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

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

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


编辑


创建nl.php和de.php后的新front-page.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 条件,但我不知道在不使用大括号 {} 时如何执行此操作。

以上代码来自:

获取特定文件

这种方式虽然违背了这个函数的目的,但也 可以使用它加载特定的模板文件。所有你需要做的 只使用一个参数:

&lt;?php get_template_part('template-parts/layout'); ?&gt;

将包含来自 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'); 
    }

?>

【问题讨论】:

    标签: wordpress multilingual polylang


    【解决方案1】:

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

    您必须为每种语言创建一个页面。照常设置翻译 然后去 WordPress...

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

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

    更新

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

    更新 2

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

    pll_current_language($value);
    

    ‘$value’ => (可选) ‘name’ or ‘locale’ or ‘slug’, 默认值 去“蛞蝓”

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

    【讨论】:

    • 这很有道理,谢谢。但是,我的模板包含一些内容,这意味着我需要两个不同的模板,具体取决于语言……或者一些 PHP 会根据当前设置的语言显示某些内容。知道我该怎么做吗?不幸的是,我的 PHP 知识很基础。非常感谢!
    • 这看起来和我要找的东西一模一样!但是,我确定我仍然在代码中做错了什么。我制作了 2 个额外的模板,nl.php 和 de.php。我现在将使用front-page.php 中的代码更新我的原始问题。有什么建议吗?
    • 尝试在 if 语句中使用大括号。
    • 感谢您的回复,我尝试加入大括号,好消息是 PHP 是可读的,但是无论选择哪种语言,它都只显示德语模板。德语模板是de.php,位于else 语句之后(参见上面的编辑)。知道有什么问题吗?
    • 也许您需要使用内部 polylang 函数来检查当前语言。更新了答案。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2018-03-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多