PHP致命错误:未捕获错误:对NULL调用成员函数ATP_Variable()

时间:2021-09-11 作者:insect trojan

您好,我有一个管理选项中的下一个错误,代码行是下一个。你能帮帮我吗?

【2021 9月11日12:02:43 UTC】PHP致命错误:未捕获错误:在/var/www/vhosts//主题选项中调用成员函数atp\\u variable()。php:858堆栈跟踪:#0/var/www/vhosts/昆虫。gr/httpdocs/wp包括/类wp挂钩。php(303):atp\\u options()#1/var/www/vhosts/昆虫。gr/httpdocs/wp包括/类wp挂钩。php(327):WP\\U挂钩->;apply\\u filters()\\2/var/www/vhosts/昆虫。gr/httpdocs/wp包括/插件。php(470):WP\\U挂钩->;do\\u action()#3/var/www/vhosts/昆虫。gr/httpdocs/wp设置。php(578):do\\u action()#4/usr/local/psa/admin/plib/modules/wp-toolkit/vendor/wp-cli/vendor/wp-cli/php/wp-cli/Runner。php(1291):require(“/var/www/vhosts…”)#5/usr/local/psa/admin/plib/modules/wp-toolkit/vendor/wp-cli/vendor/wp-cli/php/wp-cli/Runner。php(1212):WP\\u CLI\\Runner->;load\\u wordpress()#6/usr/local/psa/admin/plib/modules/wp-toolkit/vendor/wp-cli/vendor/wp-cli/wp-cli/php/wp-cli/Bootstrap/LaunchRunner。php(23):WP\\u CLI\\Runner->;start()#7/usr/local/psa/admin/plib/modules/wp-toolkit/vendor/wp-cli/ve-in/var/www/vhosts/em>/主题选项。php在线858

        $iva_of_options[] = array(
        \'name\'    => \'Select Slider Type\',
        \'desc\'    => \'Select which slider you want to use for the Frontpage of the theme.\',
        \'id\'      => $shortname . \'_slider\',
        \'std\'     => \'flexslider\',
        \'class\'   => \'select300\',
        \'type\'    => \'select\',
        \'options\' => $atp_theme->atp_variable( \'slider_type\' ),
    );
整个代码都在这里代码共享。io/zyXYA7

1 个回复
SO网友:Jacob Peattie

问题中的错误消息似乎是从WP CLI引发的。根据您的其他评论,问题是您的主题没有正确声明全局变量。

在代码的某个地方,在函数外声明了以下内容:

$atp_theme = new ATP_theme();
然后,在代码的其他部分,您有:

global $atp_theme;
通过浏览器使用WordPress时,在函数外部声明的变量,如$atp_theme 在第一行中,是全球性的。因此,您可以使用global, 就像第二行一样。

问题是,在使用WP CLI时,在函数外部声明的变量不会自动为全局变量。因此global $atp_theme 未定义。

要解决这个问题,需要在定义变量时将其显式声明为全局变量,如下所示:

global $atp_theme;

$atp_theme = new ATP_theme();
或者这也可以:

$GLOBALS[\'atp_theme\'] = new ATP_theme();

相关推荐

ServerSideRender和Media Object:将图像数据对象传递给php呈现器的属性,即使它未设置

编辑:简单地说,我遇到的问题是,在js端保存为属性的图像数据对象(js中的imgDataObj)正在传递到PHP端,即使我没有在serversiderender组件中传递它,也没有在PHP渲染回调中侦听它。我有一个自定义脚本,可以创建具有自定义大小的图像集。我正试着把它放到一个街区里。ServerSideRender似乎是一条出路。我用它制作了一些块,但从来没有一块有图像。因此,用户可以从媒体库上传/拾取图像,并为每个断点设置自定义大小。块将图像的大小和ID号发送到PHP端。我们不需要整个图像对象。例如,