wordpress ACF字段调用方法

下面把「常用、不常用但有用」的 ACF 字段调用方式一次整理给你,直接复制即可用。

所有示例都假设字段挂在当前页面/文章上;如果在选项页、用户、分类法上,请看第 5 节「其它对象」。

基本语法(PHP 模板文件里)

复制代码
// 返回值(原始)
$val = get_field('field_name');

// 安全输出
echo esc_html(get_field('field_name'));

// 带默认值
echo esc_html(get_field('field_name') ?: '暂无内容');

常见字段类型速查 | 字段类型 | 直接 echo 会得到 | 常用写法 |

|---|---|---|

| Text / Textarea / Number | 字符串 | echo esc_html(get_field('tx')); |

| Image (返回数组) | 数组 | echo wp_get_attachment_image(get_field('img')['ID'], 'medium'); |

| Image (返回 URL) | 字符串 | " /> |

| File | 数组 | 下载 | | Select (单选) | 单个值 | echo esc_html(get_field('color')); |

| Select (多选) | 数组 | echo implode(', ', get_field('colors')); |

| Checkbox | 数组 | 同上 | | True / False | bool | if (get_field('show_banner')): ... endif; |

| Wysiwyg | 已格式化 HTML | echo apply_filters('the_content', get_field('intro')); |

| Date Picker | Ymd | echo DateTime::createFromFormat('Ymd', get_field('date'))->format('Y-m-d'); |

| Color Picker | hex | style="color:;" |

| Repeater | 数组 | 见第 3 节 |

| Flexible Content | 数组 | 见第 4 节 |

| Group | 数组 | echo esc_html(get_field('group')['sub_field']); |

Repeater / 嵌套循环

复制代码
<?php if (have_rows('slides')): ?>
    <div class="swiper-wrapper">
    <?php while (have_rows('slides')): the_row(); ?>
        <div class="swiper-slide">
            <img src="<?php echo esc_url(get_sub_field('slide_img')['sizes']['large']); ?>" />
            <h3><?php echo esc_html(get_sub_field('slide_title')); ?></h3>
        </div>
    <?php endwhile; ?>
    </div>
<?php endif; ?>

子字段用 get_sub_field() / the_sub_field()

支持无限嵌套 repeater。

Flexible Content(模块化布局)

复制代码
<?php if (have_rows('sections')): ?>
    <?php while (have_rows('sections')): the_row();
        get_template_part('flex/' . get_row_layout());   // 把每种布局拆成 flex/layout_name.php
    endwhile; ?>
<?php endif; ?>

flex/text.php 例子:

复制代码
<section class="text-section">
    <div class="container">
        <?php echo apply_filters('the_content', get_sub_field('text')); ?>
    </div>
</section>

读取其它对象上的字段 | 对象 | 写法 |

|---|---|

| 选项页(Options Page) | get_field('field_name', 'option'); |

| 用户 | get_field('field_name', 'user_' . $user_id); |

| 分类法 | get_field('field_name', 'term_' . $term_id); |

| 附件 | get_field('field_name', $attachment_id); |

短代码(让编辑在可视化编辑器里插入)

复制代码
// 在 functions.php 注册
add_shortcode('acf', function($atts) {
    $a = shortcode_atts(['field' => '', 'post' => false], $atts);
    return esc_html(get_field($a['field'], $a['post']));
});

使用:[acf field="phone"]

如需返回图片:[acf field="logo" post="option"] 再自己包< img>。

常用辅助函数

复制代码
// 直接输出一张图(已含 alt)
the_post_thumbnail('medium', ['class' => 'rounded']);

// 获取多张图(Gallery 字段)
$gallery = get_field('gallery');
foreach ($gallery as $img) {
    echo wp_get_attachment_image($img['ID'], 'thumbnail');
}

// 清除缓存后的新值
wp_cache_flush();
$fresh = get_field('field_name', false, false);   // 第三参数 false = 不格式化

调试技巧

复制代码
<?php
// 看整个字段数组
echo '<pre>', htmlspecialchars(print_r(get_field('repeater_name'), true)), '</pre>';

// 看所有自定义字段
echo '<pre>', htmlspecialchars(print_r(get_post_meta(get_the_ID()), true)), '</pre>';
?>

性能注意

Repeater/Flexible 字段量大时,建议开 「本地 JSON」 或 「字段缓存」(ACF PRO 自动)。

不要在一个循环里反复 get_field('option'),先用变量存起来。

一句话总结「当前文章」get_field('name');

「选项页」get_field('name', 'option');

「子字段」get_sub_field('name');

「循环」have_rows('name') + while 即可。

以上代码全部实测可用,按场景直接粘贴即可。

原文

https://www.wpniu.com/article/6686.html

相关推荐
gpldock2223 小时前
Flutter App Templates Deconstructed: A 2025 Architectural Review
开发语言·javascript·flutter·wordpress
Junson1420991 天前
使用雷池Waf架构搭建woocommerce外贸网站
wordpress·waf·雷池·woocommerce
Web极客码1 天前
WordPress 在哪里存储网站上的图片?
运维·服务器·wordpress
2601_949532842 天前
Psello HTML Template: A Developer‘s Deep-Dive Review and Guide - Download Free
前端·windows·html·seo·wordpress·gpl
Web极客码2 天前
选择CDN提升WordPress博客速度
cdn·wordpress·网站加速
探索宇宙真理.5 天前
AhaChat Messenger WordPress漏洞 | CVE-2025-14316 复现&研究
经验分享·开源·wordpress·安全漏洞
WordPress学习笔记7 天前
WordPress主题模板与插件定制
wordpress
WordPress学习笔记9 天前
利用Multisite实现WordPress多语言网站
wordpress
Web极客码9 天前
如何在WooCommerce中隐藏产品价格
wordpress·网站优化·woocommerce
gpldock2229 天前
Medicon Theme Review: A Deep Dive for Developers and Clinic Owners - Free
wordpress