web-dev-qa-db-ja.com

Woocommerce-プラグインで製品タイプを確認する方法

私はwordpress/woocommerceにかなり慣れていないので、カスタムプラグインの作成を始めました。

これまでのところ、APIを介してカスタムwoocommerce設定を追加しました。

[商品データ]タブで単一の商品にカスタムフィールドを追加したいという問題に遭遇しました。

次のコードを使用してそれを表示することができました:

add_action( 'woocommerce_product_options_general_product_data', array( $this, 'cuzd_general_fields' ) );
add_action( 'woocommerce_process_product_meta', array( $this, 'cuzd_general_fields_save') );

ただし、ここで、製品タイプがシンプルかバリエーションかを確認する必要があります。私は以下を試しました:

$product = new WC_Product( get_the_ID() );
        if( $product->is_type( 'simple' ) ) {
          //
}

ただし、エラーが発生します。

 Fatal error: Class 'WC_Product' not found in ....

呼び出される前にProductクラスを開始しようとしているのは良い気分です。クラスプラグインの形式全体が間違っている可能性があります。適切な指示/ベストプラクティスのある資料をいただければ幸いです。

それ以外の場合、上記が簡単な修正である場合はお知らせください。

16
Cloud_Ratha

問題は、get_the_ID()が製品のIDを返さないことである可能性があります。

$product_id = 10; // the ID of the product to check
$_product = wc_get_product( $product_id );
if( $_product->is_type( 'simple' ) ) {
// do stuff for simple products
} else {
// do stuff for everything else
}

$product_idがパターンのIDである場合、$_productに対して返されるタイプはvariationになります。

さらに、WooCommerceが設定するglobal $productを確認することもできます。ただし、これはバリエーションIDではなく、親変数の商品のIDになります。

19
helgatheviking