You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于Polylang判断WordPress页面语言并切换ACF字段

Polylang多语言ACF字段切换实现方案及代码修正

代码错误修正

你写的判断代码核心问题是变量引用漏写了$符号,同时可以优化Polylang语言判断的逻辑,修正后的基础判断代码如下:

<?php 
// 获取当前语言代码,无值时取默认语言
$lang_code = pll_current_language() ?: pll_default_language();  
// 判断是否为西班牙文
if ($lang_code == 'es') : ?>
    西班牙文测试内容
<?php else : ?>
    英文默认内容
<?php endif; ?>

注:??是PHP7+的空合并运算符,但pll_current_language()在未获取到语言时会返回默认语言,用?:更贴合场景,也兼容更多PHP版本。

ACF字段切换实现方案

假设你为英文设置的ACF字段名为sidebar_contact_text,西班牙文对应字段为sidebar_contact_text_es,可以按以下方式在sidebar.php/footer.php中实现切换:

单字段切换示例(sidebar.php中)

<?php
$lang_code = pll_current_language() ?: pll_default_language();
// 根据语言选择对应ACF字段
$contact_text = $lang_code == 'es' ? get_field('sidebar_contact_text_es') : get_field('sidebar_contact_text');
// 输出字段内容
if ($contact_text) {
    echo '<p>' . esc_html($contact_text) . '</p>';
}
?>

多字段批量处理(更高效)

如果有多个ACF字段需要切换,可以封装成函数,在主题的functions.php中添加:

function get_localized_acf_field($field_name) {
    $lang_code = pll_current_language() ?: pll_default_language();
    // 西班牙文字段后缀为_es,可根据需求调整
    $localized_field = $lang_code == 'es' ? "{$field_name}_es" : $field_name;
    return get_field($localized_field);
}

然后在sidebar.php/footer.php中直接调用:

<?php
// 获取联系文本
$contact_text = get_localized_acf_field('sidebar_contact_text');
// 获取地址文本
$address_text = get_localized_acf_field('sidebar_address_text');

if ($contact_text) echo '<p>' . esc_html($contact_text) . '</p>';
if ($address_text) echo '<p>' . esc_html($address_text) . '</p>';
?>

备选方案:加载不同PHP文件

如果后续需要更复杂的结构差异,也可以通过语言判断加载不同的模板文件:

<?php
$lang_code = pll_current_language() ?: pll_default_language();
// 加载对应语言的sidebar模板
if ($lang_code == 'es') {
    get_template_part('template-parts/sidebar', 'es');
} else {
    get_template_part('template-parts/sidebar', 'default');
}
?>

需提前创建sidebar-es.php和sidebar-default.php文件放在主题的template-parts目录下。

内容的提问来源于stack exchange,提问作者Mrich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 17:52:10