WooCommerce-调用未定义的函数is_wooCommerce()

时间:2018-07-22 作者:Omer

新的wordpress插件开发,请对我放松:D

无论如何,我正在尝试创建一个新的插件,我得到了一个500错误。我改变了WP_DEBUG 在配置中。php设置为true,以查看导致500错误的原因,并收到以下消息:

Fatal error: Uncaught Error: Call to undefined function is_woocommerce() in...

这是我当前的代码:

<?php
/**
 * Plugin Name: 
 * Plugin URI: 
 * Description: 
 * Author: 
 * Author URI: 
 * Version: 1.0
 * Text Domain: 
 *
 * Copyright: (c) 2018
 *
 * License: 
 * License URI: 
 *
 * @author    
 * @copyright Copyright (c) 2018
 * @license   
 *
 */
//
defined( \'ABSPATH\' ) or exit;
if (function_exists(is_woocommerce())) {
    echo "test: ".is_woocommerce();
} else {
    echo "test: Function does not exists!";
}
如果你需要更多信息,请告诉我,我会编辑这个问题。感谢您的帮助,谢谢!

2 个回复
SO网友:Nazaria

如果您想从另一个插件检查一个插件的函数/类等,那么最好使用plugins_loaded.

基于此,您的插件代码如下所示:

<?php
/*
Plugin Name: YOUR PLUGIN NAME
*/

defined( \'ABSPATH\' ) or exit;

add_action( \'plugins_loaded\', \'plugin_prefix_woocommerce_check\' );
    function plugin_prefix_woocommerce_check() {
    if( function_exists( \'is_woocommerce\' ) ) { 
        add_action( "wp_footer", "wpse_woocommerce_exists" );
    }   
    else {
        add_action( "wp_footer", "wpse_woocommerce_doesnt_exist" );
    }   
}   

function wpse_woocommerce_exists() {
    echo "<h1>WooCommerce Exists!</h1>";
}   

function wpse_woocommerce_doesnt_exist() {
    echo "<h1>WooCommerce Doesn\'t Exists!</h1>";
}
直接检查其他插件函数通常会导致错误,因为WordPress在代码执行时可能无法加载其他插件。但是,当WordPress完成时,它将触发plugins_loaded

检查Plugin Development Guide 有关如何开发WordPress插件的更多信息。

SO网友:Michael Ecklund

这可能是也可能不是一个相关的答案。

然而,在更新Divi主题之后,我收到了一个非常类似的错误。

Uncaught Error: Call to undefined function et_is_woocommerce_plugin_active()
我删除了主题目录中的旧Divi目录,并替换为新的Divi目录。

我倾向于删除目录/wp-content/et-cache 同样,在更新Divi时。

总之,长话短说,我在更新Divi主题后运行了这个WP-CLI命令。

wp transient delete --all --skip-packages --skip-themes --skip-plugins
错误立即得到解决,更新后的Divi主题再次按预期运行。

结束