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

WordPress自定义文章类型归档页ACF字段动态获取页ID问题

动态获取Events归档页ACF字段的解决方案

你遇到的问题核心是:自定义文章类型的归档页属于动态生成的查询页面,而非常规的单页/文章,所以get_the_ID()这类针对单个内容的函数无法拿到你绑定字段的页面ID。以下是几种可行的动态获取方法:

1. 通过页面Slug获取ID

页面Slug在版本控制中通常是固定的(只要你不主动修改),利用get_page_by_path()可以精准定位到目标页面,不受环境间ID差异影响:

// 替换成你用作Events归档的页面Slug
$archive_page = get_page_by_path('events-archive');
if ($archive_page) {
    $header = get_field('heading_editor', $archive_page->ID);
}

2. 直接在归档模板中调用ACF字段(推荐)

如果你在ACF字段组的位置规则中选择了「归档页 > Events」,那么在Events归档模板(archive-events.php)里,无需传递页面ID,ACF会自动识别当前页面类型并加载对应字段值:

// 确保在Events归档页环境下调用
if (is_post_type_archive('events')) {
    $header = get_field('heading_editor');
}

这种方法最简洁,也完全避免了ID依赖问题。

3. 通过自定义配置关联归档页

如果你的Events归档页是通过自定义代码指定的(比如注册自定义文章类型时设置了has_archive参数),可以把归档页的Slug存到主题配置里,再通过Slug获取ID:

// 主题functions.php中定义配置
define('EVENTS_ARCHIVE_SLUG', 'events-archive');

// 在模板中调用
$archive_page = get_page_by_path(EVENTS_ARCHIVE_SLUG);
if ($archive_page) {
    $header = get_field('heading_editor', $archive_page->ID);
}

补充说明

你之前尝试的get_queried_object()在自定义文章类型归档页返回的是WP_Post_Type对象(而非页面对象),所以无法拿到页面ID;get_the_ID()则是针对循环中的单篇文章,自然也不适用于归档页场景。

内容的提问来源于stack exchange,提问作者beatnik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:27:27