php 使用获取帖子元更新WooCommerce库存数量的帖子 meta

bt1cpqcv  于 2023-02-18  发布在  PHP
关注(0)|答案(1)|浏览(127)

我需要使用自定义字段修改每个产品的库存水平。
这些是我已经尝试和修改的代码片段。
我们的目标是手动修改库存水平,即使他们在库存,使订单不能放置时,库存低,并添加到购物车按钮被删除。

add_action( 'woocommerce_process_product_meta', 'custom_product_inventory_settings'  );
function custom_product_inventory_settings( $post_id ) {

//  if ( isset( $_POST['_custom'] ) ) :

    $product = wc_get_product( $post_id );

    $stock_threshold = get_post_meta( $product->get_id(), '_custom', true );

    if ( ! empty( $stock_threshold ) ) {

    $new_stock_quantity = $product->get_stock_quantity() - $stock_threshold;

    update_post_meta( $post_id, '_stock', $new_stock_quantity );

     wc_delete_product_transients( $post_id );

    }

//  endif;

}

// Save custom field
add_action( 'woocommerce_admin_process_product_object', 'action_woocommerce_admin_process_product_object', 10, 1 );
function action_woocommerce_admin_process_product_object( $product ) {

 //   if ( isset( $_POST['_out_of_stock_threshold'] ) ) {

    $product->update_meta_data( 'custom_field', sanitize_text_field( $_POST['custom_field'] ) );

    $stock_threshold = get_post_meta( $product->get_id(), 'custom_field', true );

    if ( ! empty( $stock_threshold ) ) {

    $new_stock_quantity = $product->get_stock_quantity() - $stock_threshold;

    // update_post_meta( $post_id, '_stock', $new_stock_quantity );

    $product->update_meta_data( 'custom_field', sanitize_text_field( $_POST['custom_field'] ) );

    update_post_meta( $post_id, '_stock', $new_stock_quantity );

    $post_id = $product->get_id();

     wc_delete_product_transients( $post_id );

    }
}

也许我需要使用一个不同的钩子,比如woocommerce_get_availability或者其他什么?

wgeznvg7

wgeznvg71#

不确定您的问题是什么,或者在运行代码时发生了什么,但乍一看,您是在声明变量之前使用它:

update_post_meta( $post_id, '_stock', $new_stock_quantity );

$post_id = $product->get_id();

另外,您正在使用的自定义字段真的应该称为custom_field吗?

相关问题