Woocommerce - 如何检查插件中的产品类型

Clo*_*tha 15 php wordpress plugins 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') );
Run Code Online (Sandbox Code Playgroud)

但是现在我需要检查产品类型是简单还是变化.我尝试了以下方法:

$product = new WC_Product( get_the_ID() );
        if( $product->is_type( 'simple' ) ) {
          //
}
Run Code Online (Sandbox Code Playgroud)

但是我收到一个错误:

 Fatal error: Class 'WC_Product' not found in ....
Run Code Online (Sandbox Code Playgroud)

我有一种很好的感觉,我试图在调用之前启动Product类.我很可能有类插件的整个格式错误.任何具有良好教学/最佳实践的阅读材料将不胜感激.

否则,如果以上是一个简单的修复,请告诉我.

hel*_*ing 19

问题可能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
}
Run Code Online (Sandbox Code Playgroud)

如果$product_id是变体的ID,那么返回的类型$_product将是variation.

此外,您可以检查global $product哪些WooCommerce设置.虽然这永远不会是变体ID,也不会是父变量产品的ID.

  • @Tuure变量和变量都存在.产品类型"变量"表示它是包含多个"变体"产品子项的父产品.这些变体不会在产品列表中显示为单独的产品,而是实际上是他们自己的产品帖子. (2认同)

Cra*_*key 9

这是在不创建产品实例的情况下检查产品类型的一种方法:

$product_type = get_the_terms( $product_id,'product_type')[0]->slug;
Run Code Online (Sandbox Code Playgroud)