私は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クラスを開始しようとしているのは良い気分です。クラスプラグインの形式全体が間違っている可能性があります。適切な指示/ベストプラクティスのある資料をいただければ幸いです。
それ以外の場合、上記が簡単な修正である場合はお知らせください。
問題は、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になります。