You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ACF图片图库筛选含featured_image元字段图片并随机选取求助

解决ACF图库筛选特色图片并随机选取的问题

问题分析

  1. 原代码判断条件错误:ACF的True/False字段返回的是布尔值true/false,不是字符串'1',所以$featured == '1'的判断无法生效。
  2. 缺少随机选取逻辑:原代码会输出所有符合条件的图片,而非随机单张。

修正后的代码

<?php 
// 获取图库图片
$images = get_field('project_documentation', 'option');
// 初始化数组存储符合条件的特色图片
$featured_images = [];

if( $images ):
    foreach( $images as $image ): 
        // 获取当前图片的featured_image字段(布尔值)
        $is_featured = get_field('featured_image', $image['id']);
        
        // 筛选出标记为特色的图片
        if ( $is_featured ):
            $featured_images[] = $image;
        endif;
    endforeach;

    // 如果有符合条件的图片,随机选取一个
    if ( !empty($featured_images) ):
        // 随机获取数组中的一个键名
        $random_key = array_rand($featured_images);
        $random_image = $featured_images[$random_key];
?>
        <div class="gallery-image">
            <a href="<?php echo esc_url($random_image['url']); ?>">
                <img src="<?php echo esc_url($random_image['sizes']['large']); ?>" 
                     alt="<?php echo esc_attr($random_image['alt']); ?>" />
            </a>
        </div>
<?php
    endif;
endif;
?>

关键修改说明

  • 筛选逻辑修正:将判断条件改为if ( $is_featured ),直接识别ACF返回的布尔值true。
  • 收集符合条件的图片:新增$featured_images数组,把所有标记为特色的图片存入其中。
  • 随机选取实现:使用array_rand()函数随机获取数组中的一个元素,确保每次只输出一张随机的特色图片。
  • 安全优化:添加esc_url()和esc_attr()对输出的URL和属性进行转义,避免XSS风险。

内容的提问来源于stack exchange,提问作者R-G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:25:30