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

使用ACF Pro创建主题选项页后,如何在header.php获取字段值?

解决ACF Pro主题选项字段在header.php不显示的问题

我来帮你排查这个问题——用ACF Pro的主题选项字段在header里不显示内容,大概率是因为你没指定全局选项的ID参数,毕竟the_field()默认是针对当前帖子/页面的,而主题选项是全局存储的。

第一步:修正核心调用代码

把你的代码改成下面两种方式之一,明确告诉ACF去全局选项容器里取值:

  • 直接输出(用the_field):
    <?php the_field('call_now', 'options'); ?>
    
  • 先获取再输出(用get_field,适合需要额外判断或处理的场景):
    <?php 
      $call_now = get_field('call_now', 'options');
      if($call_now) {
        echo $call_now;
      }
    ?>
    

第二步:排查基础设置是否到位

如果改了代码还是没显示,检查这几个关键点:

  • 确认你的字段**键名(Field Name)**确实是call_now——别把字段的显示标签(Field Label)当成了字段名,去ACF字段组里核对清楚。
  • 去你的主题选项页,确认已经保存了call_now字段的值,没保存的话肯定拿不到内容。
  • 确认你已经在functions.php里注册了主题选项页,ACF需要这段代码来创建全局选项的存储容器,示例代码如下:
    if( function_exists('acf_add_options_page') ) {
      // 基础注册
      acf_add_options_page();
      // 也可以自定义选项页的名称、权限等
      // acf_add_options_page(array(
      //   'page_title'  => '主题全局设置',
      //   'menu_title'  => '主题设置',
      //   'menu_slug'   => 'theme-global-settings',
      //   'capability'  => 'edit_posts',
      //   'redirect'    => false
      // ));
    }
    

第三步:排除缓存干扰

有时候缓存插件(比如WP Rocket、W3 Total Cache)会把header的静态内容缓存起来,导致新设置的字段值无法实时显示。可以暂时禁用缓存插件,刷新页面看看是否正常。

最后检查权限

确保当前登录用户有访问主题选项页的权限(默认是edit_posts权限,如果你自定义了权限规则,要确认当前用户符合要求)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:58:08