ACF Flexible Content 加载更多短代码不显示内容问题
ACF Flexible Content 点击加载更多配置修复方案
你当前配置失效是三个核心问题导致的,按以下步骤修改即可:
1. 修正短代码参数
你当前短代码里的post_type="any"、meta_key、meta_value、meta_compare都是无效参数,这类参数是用于查询文章列表的,加载当前文章/页面内的Flexible Content字段完全不需要,反而会干扰插件的查询逻辑;同时你缺失了必填的acf_post_id参数,插件无法定位要读取哪个页面的Flexible字段内容。
正确的短代码参考如下(初始加载4条,点击按钮加载更多,关闭自动滚动加载):
[ajax_load_more container_type="div" container_classes="row justify-content-center" acf="true" acf_field_type="flexible" acf_field_name="review-repeater" acf_post_id="current_post" posts_per_page="4" scroll="false" button_label="加载更多" ]
如果是在PHP模板文件中输出短代码,把acf_post_id="current_post"替换为acf_post_id="'.get_the_ID().'",通过echo do_shortcode()函数输出即可。
2. 修正Repeater Template模板内容
你之前把完整的Flexible循环外层代码(have_rows判断、while循环、外层row容器)全部粘贴到了模板里,这是最常见的配置错误:插件本身已经实现了分页循环逻辑,Repeater Template里只需要放单个Flexible条目的输出代码,不需要重复写循环判断和外层容器。
把插件Repeater Template里的原有内容全部清空,替换为以下代码即可:
<div class="rev"> <?php if( get_row_layout() == 'review-repeater' ):?> <div class="d-flex justify-content-between"> <div class="rev-left"> <div class="raiting-review"><?php echo get_sub_field('review-raiting'); ?></div> <div class="review-content"> <p><?php echo get_sub_field('review-content'); ?></p> <div class="d-flex"> <?php echo get_sub_field('review-author'); ?> , <?php echo get_sub_field('review-date'); ?> </div> </div> </div> <div class="rev-right"> <img src="<?php echo get_sub_field('review-platform') ?>"> <p><?php echo get_sub_field('review-count'); ?></p> </div> </div> </div> <?php endif; ?>
3. 排错检查
如果按以上修改后仍然不输出内容,按顺序排查:
- 确认插件的ACF扩展模块已经在插件设置页启用,没有激活模块的情况下ACF相关参数全部不生效
- 核对Flexible Content字段内的布局机器名:你代码里判断的是
get_row_layout() == 'review-repeater',注意不要把Flexible字段名和字段内添加的布局(Layout)机器名搞混,如果布局名写错,判断逻辑不会生效,自然输出空内容 - 临时删除模板里的布局判断代码,写入一段测试文字(比如
<p>测试条目</p>),如果能正常加载输出,就可以确定是布局名配置错误 - 清空站点的页面缓存、对象缓存后再测试,缓存经常会导致动态加载逻辑不生效
内容的提问来源于stack exchange,提问作者libertarian
相关产品推荐
相关产品推荐

