PHP中do_shortcode调用带属性top_rated_products短代码失效
问题原因
带属性的短代码调用失效,核心是PHP引号嵌套语法错误:你用双引号包裹do_shortcode()的参数字符串,短代码内部的属性值又直接使用双引号,会导致PHP提前截断字符串,解析逻辑出错,功能自然无法正常运行。这也是不带属性的短代码写法可以正常运行的原因——没有内部引号触发字符串截断问题。
可用解决方法
任选以下一种写法替换原有代码即可,三种写法效果完全一致,WordPress短代码解析器对单、双引号包裹的属性值都能正常识别:
- 方法1:短代码内部属性改用单引号,保留外层双引号
<?php echo do_shortcode("[top_rated_products orderby='rand' per_page='15']"); ?>
- 方法2:转义内部的双引号,在内部双引号前加反斜杠,标记其为字符串内容而非字符串边界
<?php echo do_shortcode("[top_rated_products orderby=\"rand\" per_page=\"15\"]"); ?>
- 方法3:外层参数改用单引号包裹,短代码内部属性保留双引号
<?php echo do_shortcode('[top_rated_products orderby="rand" per_page="15"]'); ?>
内容的提问来源于stack exchange,提问作者sevenkader
相关产品推荐
相关产品推荐

