PHP else语句不显示:WP文章自定义字段profession判断异常
问题排查与解决方案
兄弟,我一眼就瞅出问题所在啦!你的代码里藏了个超常见的小bug,直接导致else语句永远无法执行,咱们一步步来修复:
核心错误:赋值符号代替了比较符号
你写的条件判断是 if ( $profession = 'RN' ) —— 这里用的是赋值运算符=,不是比较运算符!它会把字符串'RN'直接赋值给$profession变量,然后这个表达式的结果永远为true,自然就永远走不到else分支了。
完整修复步骤
1. 先正确获取自定义字段的值
首先要确保你已经从WordPress中取出了profession字段的值,用get_post_meta()函数是标准做法:
// 获取当前文章的profession自定义字段,第三个参数true确保返回单个字符串 $profession = get_post_meta(get_the_ID(), 'profession', true);
2. 修正条件判断的运算符
把赋值符号改成严格比较运算符===(推荐,因为它会同时检查值和数据类型,避免意外匹配),或者松散比较==:
<?php // 先获取字段值 $profession = get_post_meta(get_the_ID(), 'profession', true); // 用严格比较判断是否为RN if ( $profession === 'RN' ) { echo '<li>Minimum 2 years experience</li><li>Current license in this state</li><li>Graduated from accredited Nursing school</li><li>BCLS required</li><li>BSN preferred</li>'; } else { // 这里放置非RN时要显示的内容 echo '<li>Your non-RN requirements go here</li>'; } ?>
可选优化:处理大小写问题
如果担心用户输入的字段值有大小写差异(比如rn、Rn),可以先把字段值转成统一大小写再判断:
$profession = strtoupper(get_post_meta(get_the_ID(), 'profession', true));
这样不管输入的是哪种大小写形式,都能正确匹配到RN的条件。
内容的提问来源于stack exchange,提问作者Kyle Boreing
相关产品推荐
相关产品推荐

