为什么WordPress开发中用empty()判断时字符串变量被识别为空?
问题根源
你判断逻辑出错的核心原因是判断用的变量和实际输出的变量完全不匹配:
- 你实际输出内容时调用的是
get_post_meta( get_the_ID(), 'hcf_single_role_1', true )来获取当前文章的自定义字段值 - 但你判断时用的是
$post_id['hcf_single_role_1'],这个变量你没有正确赋值,本身就不存在/为空,所以empty()判断永远返回真,逻辑自然反转 - 后续尝试用
$_POST['hcf_single_role_1']判断也不对:$_POST仅在表单提交请求时才会携带对应参数,正常访问前端文章页面时不会有对应的POST值,自然也一直判定为空
正确实现代码
推荐先把自定义字段值存到变量再判断,避免重复调用get_post_meta:
<?php // 先统一取值存到变量 $user_role = get_post_meta( get_the_ID(), 'hcf_single_role_1', true ); if ( !empty( $user_role ) ) { ?> <div class="name"><?php echo $user_role; ?></div> <?php } else { ?> Variable Empty <?php } ?>
额外注意
如果你的自定义字段允许存0这类会被empty()判定为空的有效值,可以把判断条件改成if ( $user_role !== '' ),避免合法值被误判为空。
内容的提问来源于stack exchange,提问作者louislugas
相关产品推荐
相关产品推荐

