更改产品更新时的产品发货类别 - Woocommerce

时间:2017-11-06 21:23:49

标签: wordpress woocommerce hook-woocommerce woocommerce-rest-api

如何在更新后使用代码编辑产品的运输类?

这是我到目前为止在functions.php上的内容。它适用于product_cat术语,但它不适用于product_shipping_class。

add_action('save_post_product', 'my_product_save', 10, 3);

function my_product_save( $post_id, $post, $update ) {

    $shipping_class_slug = 'international-standard-shipping';

    wp_set_object_terms( $post_id, $shipping_class_slug, 'product_shipping_class' ); 

}

谢谢!

1 个答案:

答案 0 :(得分:0)

save_post挂钩在post_meta更新之前运行。我们需要使用一个在更新或添加post_meta后触发的钩子。您还应该使用WooCommerce产品类功能而不是WordPress功能来设置送货元数据。

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' ) { 
            $product = wc_get_product( $post_id );
            $int_shipping = get_term_by( 'slug', 'international-standard-shipping', 'product_shipping_class' );
            $product->set_shipping_class_id( $int_shipping->term_id );
            $product->save();
        }
    }
}