Sage Woocommerce-试图获取非对象的属性(get_current_screen()-> id)

时间:2019-04-24 11:23:54

标签: php wordpress woocommerce notice roots-sage

我不太确定何时确切发生这种情况,因为它只发生在实时服务器上,而不是本地发生。但是有时(每分钟几次),我在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.phpvar_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

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

0 个答案:

没有答案