根据 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 );