根据产品类别自动设置WooCommerce产品运输类别

萨拉姆

根据类别,我的产品有两个装运类别。每次更新产品后,它都会松开运输类别,我不知道为什么。

但是,我尝试以编程方式为产品“节省”分配适当的运输类别:

  • 指定类别=> 1001
  • 否则=> 1002

这是我的代码:

add_action( 'added_post_meta', 'woo_on_product_save', 10, 4 );
add_action( 'updated_post_meta', 'woo_on_product_save', 10, 4 );

function woo_on_product_save( $meta_id, $post_id, $meta_key, $meta_value ) {
    if ( $meta_key == '_edit_lock' ) {
        if ( get_post_type( $post_id ) == 'product' ) { 
            if (has_term('fastfood','product_cat')||has_term('coffee','product_cat')){
            $shipping_class_type=1001;
    }
    else{
        $shipping_class_type=1002;
    }
            $product = wc_get_product( $post_id );
            $product->set_shipping_class_id( $shipping_class_type );
            $product->save();
        }
    }
}

但这不能按预期工作。当我对任何产品(甚至是指定类别的产品)进行更改时,装运类别始终变为1002。

你能告诉我我做错了吗?

LoicTheAztec

已更新-而是尝试使用其他钩子(未试用)进行以下操作

add_action( 'woocommerce_process_product_meta', 'woo_on_product_save', 100 );
function woo_on_product_save( $post_id ) {
    if ( has_term( array('fastfood', 'coffee'), 'product_cat', $post_id ) ) {
        $shipping_class_id = 1001;
    } else {
        $shipping_class_id = 1002;
    }
    $product = wc_get_product( $post_id );
    $product->set_shipping_class_id( $shipping_class_id );
    $product->save();
}

代码进入活动子主题(或活动主题)的functions.php文件中。它可以工作。

注意:您需要确保1001并且1002作为发货类别ID存在。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章