在 save_post 上设置产品重量的挂钩

Sti*_*art 1 product save woocommerce

有没有办法用save_post挂钩设置产品重量?

我有以下代码,但我不知道如何覆盖重量:

add_action( 'save_post', 'change_weight' );
function change_weight($post_id) {
    $WC_Product = wc_get_product($post_id);
}
Run Code Online (Sandbox Code Playgroud)

hel*_*ing 6

如果您使用,woocommerce_process_product_meta_$product_type那么您不必担心随机数,因为您可以利用 WooCommerce 的健全性检查。

// This will work in both WC 2.6 and WC 2.7
add_action( 'woocommerce_process_product_meta_simple', 'so_42445796_process_meta' );
function so_42445796_process_meta( $post_id ) {
    $weight = 100;
    update_post_meta( $post_id, '_weight', $weight );
}
Run Code Online (Sandbox Code Playgroud)

WC 2.7 将引入 CRUD 方法来抽象数据的保存方式。我怀疑他们最终会将产品和产品元从默认的 WordPress 表中移出,但我不能确定。在 2.7 中,您可以在保存对象之前使用woocommerce_admin_process_product_object钩子来修改对象。$product

// Coming in WC2.7 you can use the CRUD methods instead
add_action( 'woocommerce_admin_process_product_object', 'so_42445796_process_product_object' );
function so_42445796_process_product_object( $product ) {
    $weight = 100;
    $product->set_weight( $weight );
}
Run Code Online (Sandbox Code Playgroud)