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

调用未定义函数get_field()致WordPress站点无法访问求助

解决思路:Call to undefined function get_field() 导致站点无法访问

错误信息

Fatal error: Uncaught Error: Call to undefined function get_field()
  in /Users/My Repo/project_prod/wp-content/themes/project/functions.php:388
Stack trace:
 #0 /Users/My Repo/project_prod/wp-includes/class-wp-hook.php(308): {closure}('')
 #1 /Users/My Repo/project_prod/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters(NULL, Array)
 #2 /Users/My Repo/project_prod/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
 #3 /Users//My Repo/project_prod/wp-includes/script-loader.php(2012): do_action('wp_print_script...')
 #4 /Users//My Repo/project_prod/wp-includes/class-wp-hook.php(308): print_head_scripts('')
 #5 /Users//My Repo/project_prod/wp-includes/class-wp-hook.php(332): WP_Hook->apply_filters(NULL, Array)
 #6 /Users//My Repo/project_prod/wp-includes/plugin.php(517): WP_Hook->do_action(Array)
 #7 /Users//My Repo/project_prod/wp-admin/admin-header.php(146): do_action('admin_print_scr...')
 #8 /Users//My Repo/project_prod/wp-admin/index.php(137): require_once('/Users//My ...')
 #9 {main} thrown in /Users//My Repo/project_prod/wp-content/themes/project/functions.php on line 388

问题背景

该错误导致站点后台及首页无法访问;尝试通过数据库切换主题以更新ACF插件,但插件列表为空无法操作。引发错误的代码如下:

add_action('wp_print_scripts', function () {
  global $post;
  $sections =  get_field('sekcje',$post);
  $dequeue = true;
  if (!empty($sections)) {
      foreach ($sections as $section) {
        if ($section["acf_fc_layout"] == 'kontakt') {
        $dequeue = false;
      }
    }
  }
  wp_dequeue_script( 'google-recaptcha' );
  wp_dequeue_script( 'wpcf7-recaptcha' );
});

解决步骤

1. 临时修复代码,恢复站点访问

直接修改functions.php中的报错代码,给get_field()添加函数存在判断,避免触发致命错误:

add_action('wp_print_scripts', function () {
  global $post;
  // 先判断ACF函数是否存在,防止插件未加载时报错
  if (!function_exists('get_field')) {
      wp_dequeue_script( 'google-recaptcha' );
      wp_dequeue_script( 'wpcf7-recaptcha' );
      return;
  }

  $sections = get_field('sekcje', $post);
  $dequeue = true;
  
  if (!empty($sections)) {
      foreach ($sections as $section) {
          if ($section["acf_fc_layout"] == 'kontakt') {
              $dequeue = false;
          }
      }
  }

  // 只有当不需要保留recaptcha脚本时才取消加载
  if ($dequeue) {
      wp_dequeue_script( 'google-recaptcha' );
      wp_dequeue_script( 'wpcf7-recaptcha' );
  }
});

修改后上传文件,站点即可恢复访问,后续再处理ACF插件问题。

2. 修复ACF插件异常问题

  • 通过文件管理器/FTP处理:
    进入站点根目录的wp-content/plugins/文件夹,检查是否存在advanced-custom-fields(或ACF Pro对应的目录):
    • 若目录存在但文件不完整:下载最新版ACF插件,覆盖原目录文件。
    • 若目录不存在:直接上传最新版ACF插件到plugins目录,然后登录后台启用插件。
  • 通过数据库启用插件:
    若后台仍无法操作插件,可直接修改数据库:
    1. 登录数据库管理工具(如phpMyAdmin),找到wp_options表。
    2. 搜索active_plugins选项,将ACF插件的路径(如advanced-custom-fields/acf.php)添加到选项值的数组中。
    3. 保存修改后刷新站点,ACF插件即可自动启用。

3. 代码优化避免后续问题

  • 所有调用ACF函数的地方,都要先通过function_exists('函数名')判断函数是否存在,防止插件未加载时出现致命错误。
  • 针对前后台场景拆分逻辑:wp_print_scripts钩子会同时作用于前台和后台,可换成wp_enqueue_scripts(前台专用)和admin_enqueue_scripts(后台专用),避免后台执行不必要的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 12:53:35