web-dev-qa-db-ja.com

WooCommerce - 未定義の関数is_woocommerce()への呼び出し

ここで新しいそしてWordpressのプラグインの開発に、私に簡単に行きます:D

とにかく、私は新しいプラグインを作成しようとしています、そして私は500エラーを得ています。 500エラーの原因を確認するためにconfig.phpのWP_DEBUGをtrueに変更し、次のメッセージを受け取りました。

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!";
}

それ以上の情報が必要な場合は、教えてください。質問を編集します。助けてくれてありがとう、ありがとう!

1
Omer

あるプラグインの機能/クラスなどを他のプラグインからチェックしたい場合は、 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>";
}

あなたのCODEが実行される時までにWordPressが他のプラグインをロードすることができないかもしれないので、他のプラグイン機能を直接チェックすることはしばしばエラーにつながるでしょう。しかし、WordPressが完了すると、plugins_loadedフックが起動されます。

WordPressプラグインの開発方法についての詳細は、 プラグイン開発ガイド を参照してください。

2
Nazaria