doucitao2944 2016-01-01 13:46
浏览 85

高级自定义字段 - 缩略图

Using Advanced Custom Fields (ACF), I usually use the following code to display a specific field with a specific thumbnail size (using image ID):

$image = get_field('field_name_here'); 
$size = 'thumbnail_size_here'; 
if( $image ) { 
    echo wp_get_attachment_image( $image, $size );
}

However, when I tried to use this code in a repeater field, it just spits out numbers.

I have tried updating the above code to:

$image = the_sub_field('field_name_here'); 
$size = 'thumbnail_size_here'; 
if( $image ) { 
    echo wp_get_attachment_image( $image, $size );
}

However, this does not work, again it just spits out numbers. The full code would be like this:

<?php if(get_field('example_repeater_field')): ?>
    <ul>
        <?php while(has_sub_field('example_repeater_field')): ?>

        <li>
            <?php 
            $image = the_sub_field('field_name_here'); 
            $size = 'thumbnail_size_here'; 
            if( $image ) { 
                echo wp_get_attachment_image( $image, $size );
            } ?>
        </li>

       <?php endwhile; ?>
    </ul>
<?php endif; ?>

I have read the info on the ACF website but cannot see anything that related to custom thumbnail sizes.

Has anyone come across this before and found a solution?

  • 写回答

2条回答 默认 最新

  • dongyinzhi4689 2016-03-12 14:42
    关注

    I'm not a huge fan of while loops and multiples requests, so I usually prefer to get my data with only one request then loop through it with a foreach, like this :

    <?php $fields = get_field('repeater_field'); ?>
    <?php foreach ($fields as $field): ?>
        <?= $field['field_name']; ?>
    <?php endforeach; ?>
    

    Also, you could try to have the image field set to return the image object (instead of the id), and to display the image like this : (see the "Customized display (Object)" section)

    <?php $image = get_field('image'); ?>
    <?php echo $image['sizes']['thumbnailSize']; ?>
    

    Which in your case would give us something like this (once you've set your acf field to return an object) :

    <?php $fields = get_field('repeater_field'); ?>
    <?php if( !empty($fields) ): ?>
        <ul>
            <?php foreach ($fields as $field): ?>
                <li><?= $field['field_name']['sizes']['thumbnail_size']; ?></li>
            <?php endforeach; ?>
        </ul>
    <?php endif; ?>
    
    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题