当前位置: 首页 > 知识库问答 >
问题:

ACF中继器场|加载更多

凌长恨
2023-03-14

我遵循Github代码向ACF中继器字段添加更多负载。我有101个字段,但加载更多的字段无效。我也试着成为一个臭虫。Ajax响应为0。可能是通过Ajax,它不工作。我需要在函数上添加任何内容吗。php文件。Ajax响应为0。

<?php 

    /*
        The code in this file is an example off the code that you would use in your template to
        show the first X number of rows of a repeater

        I'm sure there are more elegant ways to do the JavaScript, but what's here will work
    */

    if (have_rows('gallery_work', 'option')) {
        // set the id of the element to something unique
        // this id will be needed by JS to append more content
        $total = count(get_field('gallery_work', 'option'));
        ?>
            <ul id="my-repeater-list-id">
                <?php 
                    $number = 2; // the number of rows to show
                    $count = 0; // a counter
                    while( have_rows('gallery_work', 'option') ):the_row();
                        //the_row();
                        $image_se_work = get_sub_field('image_se_work', 'option');
                        ?>
                            <li><img src="<?php echo $image_se_work;?>" alt=""></li>
                        <?php 
                        $count++;
                        if ($count == $number) {
                            // we've shown the number, break out of loop
                            break;
                        }
                    endwhile; // end while have rows
                ?>
            </ul>
            <!-- 
                add a link to call the JS function to show more
                you will need to format this link using
                CSS if you want it to look like a button
                this button needs to be outside the container holding the
                items in the repeater field
            -->
            <a id="my-repeater-show-more-link" href="javascript:void(0);" onclick="my_repeater_show_more();"<?php 
                if ($total < $count) {
                    ?> style="display: none;"<?php 
                }
                ?>>Show More</a>
            <!-- 
                The JS that will do the AJAX request
            -->
            <script type="text/javascript">
                var my_repeater_field_post_id = <?php echo $post->ID; ?>;
                var my_repeater_field_offset = <?php echo $number; ?>;
                var my_repeater_field_nonce = '<?php echo wp_create_nonce('my_repeater_field_nonce'); ?>';
                var my_repeater_ajax_url = '<?php echo admin_url('admin-ajax.php'); ?>';
                var my_repeater_more = true;

                function my_repeater_show_more() {

                    // make ajax request
                    $.post(
                        my_repeater_ajax_url, {
                            // this is the AJAX action we set up in PHP
                            'action': 'my_repeater_show_more',
                            'post_id': my_repeater_field_post_id,
                            'offset': my_repeater_field_offset,
                            'nonce': my_repeater_field_nonce
                        },
                        function (json) {
                            // add content to container
                            // this ID must match the containter 
                            // you want to append content to
                            $('#my-repeater-list-id').append(json['content']);
                            // update offset
                            my_repeater_field_offset = json['offset'];
                            // see if there is more, if not then hide the more link
                            if (!json['more']) {
                                // this ID must match the id of the show more link
                                $('#my-repeater-show-more-link').css('display', 'none');
                            }
                            console.log(json);
                        },
                        'json'
                    );
                }

                console.log(<?php echo $total;?>);

            </script>
        <?php       
    } // end if have_rows

?>

共有1个答案

李飞翼
2023-03-14

此处只有 2 个文件示例中的一个文件。这是模板中的代码。此示例的 PHP 端位于 https://github.com/Hube2/acf-dynamic-ajax-select-example/tree/master/repeater-ajax-load-more 的其他 PHP 文件中,其中包括需要添加到函数.php文件的 WP AJAX 操作。

 类似资料:
  • 我已经创建了一个名为“产品”的自定义帖子类型和一个名为“配料”的帖子类型中的自定义分类。 我已经添加了一个名为“成分INCI”的repeater字段和“成分INCI组”的子字段,该字段调用分类法“成分”中的值。 自定义中继器字段屏幕截图: 每个产品都有很多成分,我想展示一个产品所选成分的列表。这是我的模板代码: 此代码似乎破坏了输出。请帮忙!

  • 我正在使用高级自定义字段(ACF ),并尝试以编程方式向现有组(group_5621b0871e1b1)添加一个中继器,但它不起作用。相同的代码适用于文本字段,但不适用于repeater。 在我的插件中: 它显示了group_5621b0871e1b1组中的此错误: 我做错什么了吗?有没有可能以编程方式添加一个中继器。

  • 我有一个按钮,当您单击它时,它会触发对一个函数的ajax调用,该函数应根据数据属性删除acf repeater字段中的一行。 这是函数,但有问题的行不会删除:

  • 我正在尝试将转发器字段添加到灵活的内容行中,但由于某种原因,没有输出任何内容。我已经检查了字段,它们似乎是正确的,所以有人可以指出我哪里出错了吗?谢谢

  • 我有一个带有ACF中继器字段的分类。我正在尝试在自定义REST APIendpoint的回调中添加行,但没有运气。该字段的方案是: 我使用以下命令向字段中添加一行-但运气不佳: 知道我做错了什么吗?添加行是否只适用于Post而不适用于Term....?我怀疑那是真的...

  • 我试图在WP管理仪表板中呈现一个干净、易于使用的客户端后端字段提交,它可以将中继器字段数据排序为适当的选项卡内容。这是设置。 我试过的代码;