【问题标题】:How to avoid `Call to undefined function` fatal error in a custom PHP file for WordPress如何避免 WordPress 自定义 PHP 文件中的“调用未定义函数”致命错误
【发布时间】:2022-10-09 17:28:57
【问题描述】:

我们在WordPress.我们正在尝试制作可定制的CSS样式表。使用高级自定义字段插件,我们创建了一个自定义字段,名为颜色.我们将使用它作为一个选项来定义一个十六进制格式的颜色值,就像在 CSS 中使用的那样。

我们创建了一个 PHP 文件,仅用作 CSS 样式表。它作为 CSS 资源从我们的 WordPress 加载。这个 PHP 生成了一个 CSS 代码,我们希望在其中使用我们的颜色选项作为某些元素的颜色属性。

但是,问题是 PHP 会生成此错误:

致命错误: 未捕获的错误:调用未定义的函数 the_field()...

这是PHP代码:

<?php
header('Content-type: text/css');
the_field('primary_theme_color', 'option');
$color = the_field('primary_theme_color', 'option');
?>
:root {
    --primary-color:<?php echo $color; ?>;
}
* {
    background-color: var(--primary-color);
}

我们知道 the_field() 函数存在于 Advanced Custom Fields 插件中,为什么它不起作用?

笔记.- 这是@mayur-tech 最初发布的问题,但已被删除。但是,我给出了一个很好的回应,我不想迷路。所以我问当前的问题只是为了回答我自己。

https://stackoverflow.com/questions/73995678/fatal-error-uncaught-error-call-to-undefined-function-the-field/73995827

【问题讨论】:

    标签: php css wordpress wordpress-theming advanced-custom-fields


    【解决方案1】:

    错误信息再清楚不过了:您假装使用未定义的函数。这个函数是the_field(),是的,这是一个已知函数高级自定义字段WordPress的插件,但这就是它发生的事情:

    您已经制作了一个 PHP 脚本来生成 CSS 样式表。在此脚本中,您需要使用the_field() 函数。这个脚本独立运行,因此,当您尝试使用该函数时,它没有声明。你需要加载以前的WordPress.

    只需添加这一行前调用the_field() 函数:

    require_once 'pathToYourWordPressRootDir/wp-blog-header.php';
    

    当然,您需要将pathToYourWordPressRootDir 替换为正确的值。例如,如果您的 PHP 文件在 wp-content/themes/yourTheme/assets/common/ 中,那么它将是:

    require_once '../../../../../../wp-blog-header.php';
    

    或者,更可靠:

    require_once dirname(__FILE__) . '/../../../../../../wp-blog-header.php';
    

    笔记.- 在许多帖子中,您会发现加载 WordPress 的方式需要 wp-load.php 而不是 wp-blog-header.php。但我猜wp-load.php 更重,所以我更喜欢wp-blog-header.php,我尝试使用它,它工作正常!

    记住.- 必须安装并激活高级自定义字段插件。

    重要的

    函数the_field() 不返回任何内容,只是回显get_field()。所以,要得到你想要的值,你需要使用get_field()函数:

    $color = get_field('primary_theme_color', 'option');
    

    【讨论】:

      猜你喜欢
      • 2014-07-11
      • 2016-12-11
      • 2010-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多