我不太确定何时确切发生这种情况,因为它只发生在实时服务器上,而不是本地发生。但是有时(每分钟几次),我在debug.log
中收到一条PHP通知。
PHP通知为:Trying to get property of non-object in /path/to/wordpress/wp-content/themes/themename/vendor/roots/sage-woocommerce/src/woocommerce.php on line 57
我什至设法找出了确切的问题,即get_current_screen()->id
。
最奇怪的是,如果我在本地站点上执行与在实时站点上完全相同的操作,则在本地我会收到0条关于此的通知,但是在实时站点上我每分钟会收到4条通知。 (由于这是一个实时网站,人们正在订购等。)
也许也值得一提。该实时站点托管在cloudways上,并拥有自己的服务器。
我尝试过在鼠尾草require_once(ABSPATH . 'wp-admin/includes/screen.php');
文件中要求woocommerce.php
和var_dump(get_current_screen());
,但这只是返回NULL
。
随着时间的推移,我尝试了很多方法来解决此问题,但是老实说,自从我上次尝试此方法以来已经有一段时间了,而且我还没有任何代码。
此文件中发生此问题的确切代码是:
add_filter('wc_get_template', function ($template, $template_name, $args) {
$theme_template = locate_template(WC()->template_path() . $template_name);
// return theme filename for status screen
if (is_admin() && ! wp_doing_ajax() && function_exists('get_current_screen') && get_current_screen() && get_current_screen()->id === 'woocommerce_page_wc-status') {
return $theme_template ? : $template;
}
// return empty file, output already rendered by 'woocommerce_before_template_part' hook
return $theme_template ? get_stylesheet_directory() . '/index.php' : $template;
}, 100, 3);
好的一面是,它不会破坏订购商品的可能性,不利的一面是,我不喜欢此通知,它严重填满了debug.log
我希望-> id部分返回'woocommerce_page_wc-status',但是如上所述,无论我做什么,它都只是返回NULL
。
任何帮助都将不胜感激,因为任何地方都没有关于此的文章/帖子。