WordPress模板修改:替换user_email字段标签报错求助
问题排查与修正方案
错误原因分析
- 前后端语法混淆:原代码中的
{{{user[...]}}}是前端Underscore.js模板语法(运行在浏览器端),你将其直接写入PHP代码块中,服务器端的PHP无法识别该语法,直接触发解析错误。 - PHP语法错误:尝试代码中
echo 'Email'末尾缺少必要的分号;,这是PHP语法的硬性要求,缺失会导致脚本中断。 - 输出逻辑错误:在PHP的if分支中直接写
{{{user[...]}}},未通过echo指令将内容输出到页面,PHP会将其判定为无效代码。
正确修改方案
通过PHP判断字段键名,针对user_email字段直接输出自定义标签,其他字段保留原有前端模板逻辑,同时严格区分前后端代码的执行时机:
写法一:常规if-else结构
<?php foreach ( $reveal_fields as $key ) { ?> <# if ( typeof user['<?php echo $key; ?>'] !== 'undefined' ) { #> <span class="label"> <?php if ($key === 'user_email') { ?> Email <?php } else { ?> {{{user['label_<?php echo $key;?>']}}} <?php } ?>: </span> {{{user['<?php echo $key;?>']}}}<br /> <# } #> <?php } ?>
写法二:简洁三元运算符结构
<?php foreach ( $reveal_fields as $key ) { ?> <# if ( typeof user['<?php echo $key; ?>'] !== 'undefined' ) { #> <span class="label"> <?php echo ($key === 'user_email') ? 'Email' : '{{{user["label_' . $key . '"]}}}'; ?>: </span> {{{user['<?php echo $key;?>']}}}<br /> <# } #> <?php } ?>
内容的提问来源于stack exchange,提问作者don arnoldy
相关产品推荐
相关产品推荐

