如何获取Insert PHP Code Snippet短代码参数供ACF repeater调用
WordPress短代码参数传递实现方案
你使用的XYZ Insert Code Snippet插件会自动把短代码挂载的自定义属性注入到代码片段内的$atts变量中,按以下步骤修改即可实现动态传参判断:
- 在代码片段最顶部添加参数提取逻辑,设置默认值做容错,避免漏写参数时报错
- 将原有固定值的判断条件替换为提取到的动态参数,建议统一两边值的类型避免判断失效
修改后的完整代码如下:
<?php // 提取短代码传入参数,未传paramSet时默认匹配值为1 $shortcode_args = shortcode_atts([ 'paramSet' => 1 ], $atts); // 统一转为整数类型,匹配ACF数字字段存储格式 $target_num = intval($shortcode_args['paramSet']); ?> <?php if( have_rows('information') ): ?> <?php while( have_rows('information') ): the_row(); ?> <?php $sub_value = get_sub_field('number'); if(intval($sub_value) == $target_num): ?> <div class="d-block d-md-flex d-lg-flex"> <img src="<?php the_sub_field('image'); ?>"> <div> <?php if( have_rows('repeatable_content') ): ?> <?php while( have_rows('repeatable_content') ): the_row(); ?> <p> <?php the_sub_field('text'); ?> </p> <?php endwhile; ?> <?php endif; ?> </div> </div> <?php endif; ?> <?php endwhile; ?> <?php endif; ?>
注意事项
- 代码修改完成后,只需在页面插入短代码时调整
paramSet的属性值,即可输出对应number字段匹配的内容,例如传入paramSet="3"就会自动匹配number值为3的条目 - 如果你使用的ACF
number字段存储的是字符串格式内容,删除代码中两处intval()类型转换逻辑,直接做值比较即可 - 不要删除默认值配置,否则短代码漏传
paramSet参数时会触发PHP未定义变量警告
内容的提问来源于stack exchange,提问作者Creoad
相关产品推荐
相关产品推荐

