WordPress短代码未传入icon属性时如何设置默认显示图标
问题根因
问题出在两处逻辑漏洞:
shortcode_atts声明属性默认值时,给icon设置的默认值是空字符串,PHP松散比较规则下,空字符串和数字0用==比较会返回true,导致未传icon参数时误判为要隐藏图标- 判断逻辑使用松散比较,没有严格匹配参数值,容易出现类型转换导致的判断错误
修改步骤
- 调整
shortcode_atts配置,将icon的默认值设置为'1',即默认开启图标显示 - 修改判断逻辑,仅当明确传入
icon="0"时才隐藏图标,其余情况(包括未传参数、传icon="1")都输出箭头图标,使用严格比较避免类型转换bug
修改后的完整可运行代码如下:
function singletextutmlink($atts, $content='') { $atts = shortcode_atts( array( 'url' => '', 'name' => '', 'class' => '', 'icon'=> '1', // 设置icon默认值为1,默认显示图标 ), $atts); // 严格判断:只有明确传入icon="0"时才隐藏图标 if ($atts['icon'] === '0') { $ctaicon =''; } else { $ctaicon ='<i class="fas fa-arrow-right"></i>'; } // 提示:当前代码仅返回图标内容,实际使用时记得拼接url、name、class属性生成完整a标签,避免链接无法正常渲染 return $ctaicon; } add_shortcode( 'singletextutm', 'singletextutmlink');
效果验证
修改后完全匹配预期需求:
- 短代码写法
[singletextutm url="/about-us/" name="Know more" class="no-bg-button" icon="0"]:$ctaicon为空,不显示箭头图标 - 短代码写法
[singletextutm url="/about-us/" name="Know more" class="no-bg-button" ]:未传icon参数,自动使用默认值1,正常输出箭头图标 - 短代码写法
[singletextutm url="/about-us/" name="Know more" class="no-bg-button" icon="1"]:明确传入icon=1,正常输出箭头图标
内容的提问来源于stack exchange,提问作者user9437856
相关产品推荐
相关产品推荐

