2

我不太确定这到底是什么时候发生的,因为它只发生在实时服务器上而不是本地。但是时不时地(每分钟几次)我会在我的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无论我做什么,它都会返回。

任何帮助将不胜感激,因为任何地方都没有关于此的文章/帖子。

4

0 回答 0