我不太确定这到底是什么时候发生的,因为它只发生在实时服务器上而不是本地。但是时不时地(每分钟几次)我会在我的debug.log
.
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');
在 sagewoocommerce.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
无论我做什么,它都会返回。
任何帮助将不胜感激,因为任何地方都没有关于此的文章/帖子。