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

相关推荐
WordPress学习笔记1 小时前
推荐几个SEO友好的wordpress主题
wordpress
WordPress学习笔记1 天前
wordpress大型商城主题
wordpress
syjy23 天前
Polylang Pro WordPress多语言插件使用教程(含下载)
wordpress·wordpress插件
WordPress学习笔记4 天前
镌刻中式美学的高端WordPress主题
大数据·人工智能·wordpress
北漂的老猿4 天前
SEO&网络营销服务WordPress主题
wordpress
WordPress学习笔记4 天前
WordPress多语言外贸独立站
wordpress·wordpress多语言·wordpress独立站
北漂的老猿4 天前
响应式金融企业网站WordPress主题
金融·wordpress
syjy25 天前
WooCommerce Variation Swatches Pro WordPress插件使用教程(含下载)
wordpress·wordpress插件
WordPress学习笔记5 天前
模板业(mobanye)各行各业的网站模板
wordpress
syjy26 天前
(含下载)All in One SEO Pack Pro WordPress插件使用教程
wordpress·wordpress插件