首页 > 解决方案 > WordPress 高级自定义字段库不返回数组

问题描述

我已经ACF Plugin安装并且我的帖子中有一个画廊。我已经尝试了所有这些文档,但仍然收到错误:

Invalid argument supplied for `foreach()`

发生这种情况是因为 for each 的输入不是数组!

你知道这有什么问题吗?您认为在定义自定义字段时是否必须设置某些内容?

<?php 
    $images = get_field('mygall');
    $size = 'full'; // (thumbnail, medium, large, full or custom size)

    if( $images ): ?>
        <ul>
            <?php foreach( $images as $image ): ?>
                <li>
                    <?php echo wp_get_attachment_image( $image['ID'], $size ); ?>
                </li>
            <?php endforeach; ?>
        </ul>
<?php endif; ?>

标签: phpwordpressgalleryadvanced-custom-fields

解决方案


我认为您的问题来自您使用的get_field()事实get_fields()。这样你就不会得到一个数组。

如果它仍然不起作用,请检查get_fields() 此处的文档。尝试像只使用一样调试它get_fields(),看看输出是什么。如果它是一个空数组,则意味着您正在调用该函数loop并且它无法获取帖子ID。因此,通过手动设置 post id 来进行第二次测试get_fields(123);并检查结果。如果没有结果,则该帖子有问题。如果有结果,那么您可以进行最终测试,检查get_fields(123, 'gallery').

上述所有调试都可以包含在以下内容中:

echo '<pre>';
    print_r( get_fields(123) );
echo '</pre>';

基本上,这将使您了解从该函数获得的数据的结构是什么,以及如何操作它以获得所需的数据。


推荐阅读