使用ACF字段传递ID执行reblex短码无输出问题求助
问题原因
- 短码字符串中使用了HTML实体编码的引号
",do_shortcode()函数仅支持识别原生单/双引号作为参数边界,不会自动解析HTML实体,导致短码的id参数无法被正确识别,执行后无输出。 - 额外排查点:需确认ACF字段
choix的返回值为纯数字ID,无多余空格、HTML标签等冗余字符。
解决方案
修复代码
将实体引号替换为原生引号,同时增加ID合法性校验,避免非法参数传入:
$choix = get_field( 'choix' ); // 校验返回值为有效数字ID if ( $choix && is_numeric( $choix ) ) { // 数字类型ID可省略引号,避免符号转义问题 echo do_shortcode( '[reblex id=' . absint( $choix ) . ']' ); }
如果需要保留引号包裹参数,可使用原生单引号:
$choix = get_field( 'choix' ); if ( $choix && is_numeric( $choix ) ) { echo do_shortcode( "[reblex id='" . absint( $choix ) . "']" ); }
异常排查
如果修改后仍无输出,可按以下步骤排查:
- 临时添加调试代码
var_dump($choix);,确认ACF字段返回值为纯数字ID。 - 写死固定ID测试短码有效性:
echo do_shortcode('[reblex id=6384]');,确认短码本身可正常输出。
内容的提问来源于stack exchange,提问作者Loris GFT
相关产品推荐
相关产品推荐

