根据 WooCommerce 中的元数据设置产品运输 class
Set product shipping class based on metadata in WooCommerce
我正在尝试编写一个特定的函数,允许在 WooCommerce 自定义字段设置为特定值时自动更改产品运输 class。
请在下面找到有关自定义字段的屏幕截图
这是我想到的代码,但显然行不通。
function woo_on_product_save( $post_id ) {
$title = $product->get_meta( 'meta_easyfatt_libero_1' );
if ( $title = 'Trenta' ) {
$shipping_class_id = 1182;
}
$product = wc_get_product( $post_id );
$product->set_shipping_class_id( $shipping_class_id );
$product->save();
}
add_action( 'woocommerce_process_product_meta', 'woo_on_product_save', 100 );
如有任何建议,我们将不胜感激!
你有一些小错误
- 您使用
$product->get_meta(..
而 $product
未定义
- if 语句中的比较运算符是
==
,而不是=
- 使用
woocommerce_admin_process_product_object
来保存而不是过时的woocommerce_process_product_meta
挂钩
所以你得到:
// Save
function action_woocommerce_admin_process_product_object( $product ) {
// Get meta
$title = $product->get_meta( 'meta_easyfatt_libero_1' );
if ( $title == 'Trenta' ) {
// The targeted shipping class ID to be set for the product
$shipping_class_id = 1182;
// Set the shipping class ID
$product->set_shipping_class_id( $shipping_class_id );
}
}
add_action( 'woocommerce_admin_process_product_object', 'action_woocommerce_admin_process_product_object', 10, 1 );
我正在尝试编写一个特定的函数,允许在 WooCommerce 自定义字段设置为特定值时自动更改产品运输 class。
请在下面找到有关自定义字段的屏幕截图
这是我想到的代码,但显然行不通。
function woo_on_product_save( $post_id ) {
$title = $product->get_meta( 'meta_easyfatt_libero_1' );
if ( $title = 'Trenta' ) {
$shipping_class_id = 1182;
}
$product = wc_get_product( $post_id );
$product->set_shipping_class_id( $shipping_class_id );
$product->save();
}
add_action( 'woocommerce_process_product_meta', 'woo_on_product_save', 100 );
如有任何建议,我们将不胜感激!
你有一些小错误
- 您使用
$product->get_meta(..
而$product
未定义 - if 语句中的比较运算符是
==
,而不是=
- 使用
woocommerce_admin_process_product_object
来保存而不是过时的woocommerce_process_product_meta
挂钩
所以你得到:
// Save
function action_woocommerce_admin_process_product_object( $product ) {
// Get meta
$title = $product->get_meta( 'meta_easyfatt_libero_1' );
if ( $title == 'Trenta' ) {
// The targeted shipping class ID to be set for the product
$shipping_class_id = 1182;
// Set the shipping class ID
$product->set_shipping_class_id( $shipping_class_id );
}
}
add_action( 'woocommerce_admin_process_product_object', 'action_woocommerce_admin_process_product_object', 10, 1 );