用户标签变量值验证:PHP调用Mustache标签报错及表格数据隐藏问题
问题原因
你直接在PHP代码里使用Mustache模板标签{{meta_region}},导致PHP语法解析错误——PHP不识别Mustache的{{}}语法,进而触发致命错误,让整个用户列表表格渲染失败,所以所有数据被隐藏。
正确实现方法
有两种可行方案,根据需求选择:
方案1:使用Profile Builder自带的Mustache模板条件判断(推荐,符合插件原生机制)
Profile Builder的用户列表模板基于Mustache,支持条件判断语法,无需编写PHP,直接在模板中添加逻辑:
<td data-label="District" class="wppb-district_dar"> {{#meta_region}} {{#eq meta_region "Nairobi"}} <h2>Its a Kenya!</h2> {{/eq}} {{^eq meta_region "Nairobi"}} <h2>Its another Region!</h2> {{/eq}} {{/meta_region}} </td>
{{#meta_region}}:确保只有当region字段有值时才执行内部逻辑{{#eq 变量名 "值"}}:Mustache的相等判断助手,匹配条件时显示内部内容{{^eq ...}}:反向判断,不匹配条件时显示内部内容
方案2:用PHP正确获取用户元数据
如果必须用PHP实现,要通过WordPress原生函数获取用户元数据,不能直接使用模板标签:
<?php // 获取当前用户的region元数据,注意元键要和数据库实际存储的一致 // 模板里的{{meta_region}}对应的数据库元键通常不带meta_前缀,比如"region" $region = get_user_meta( $user->ID, 'region', true ); if ( $region === "Nairobi" ) { echo "<h2>Its a Kenya!</h2>"; } else { echo "<h2>Its another Region!</h2>"; } ?>
$user是Profile Builder用户列表模板中当前循环的用户对象,可直接调用get_user_meta()是WordPress获取用户元数据的原生函数,第三个参数true表示返回单个值
内容的提问来源于stack exchange,提问作者Geofrey Martin
相关产品推荐
相关产品推荐

