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
相关产品推荐
相关产品推荐

