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

WPML中ICL_LANGUAGE_CODE判断'en'或'es'失效问题求助

问题根源与修正方案

嘿,我一眼就看穿问题所在啦——你写的条件表达式(ICL_LANGUAGE_CODE==('en' or 'es'))在PHP里的逻辑完全不是你预期的那样!

为什么原代码会失效?

在PHP中,'en' or 'es'这种写法会被优先计算:非空字符串在布尔判断里会被视为true,所以'en' or 'es'的结果就是true。你的判断条件就变成了ICL_LANGUAGE_CODE == true,而任何非空的语言代码(比如'fr'、'de')都会被PHP自动转换为true,自然所有语言环境下都会显示内容。

至于你尝试的elseif写法没用,是因为原错误条件已经把所有情况都纳入了if分支,elseif根本没有执行的机会。

两种正确的修正写法

写法一:用逻辑或||连接独立判断

这是最直观的写法,适合少量语言的场景:

if (ICL_LANGUAGE_CODE == 'en' || ICL_LANGUAGE_CODE == 'es') {?> 
    <?php do_action( 'tt_single_property_content_before' ); ?> 
    <?php echo apply_filters( 'the_content', get_post_field( 'post_content', $single_property_id ) ); ?> 
    <?php do_action( 'tt_single_property_content_after' ); ?> 
</section> 
<?php} else { }

写法二:用in_array函数(更适合多语言扩展)

如果以后需要添加更多语言,这种写法会更简洁易维护:

if (in_array(ICL_LANGUAGE_CODE, ['en', 'es'])) {?> 
    <?php do_action( 'tt_single_property_content_before' ); ?> 
    <?php echo apply_filters( 'the_content', get_post_field( 'post_content', $single_property_id ) ); ?> 
    <?php do_action( 'tt_single_property_content_after' ); ?> 
</section> 
<?php} else { }

这两种写法都能准确判断当前语言是英文('en')或西班牙文('es'),只有这两种语言下才会显示对应的内容,其他语言则进入else分支保持为空。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:22:35