我需要使用自定义字段修改每个产品的库存水平。
这些是我已经尝试和修改的代码片段。
我们的目标是手动修改库存水平,即使他们在库存,使订单不能放置时,库存低,并添加到购物车按钮被删除。
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
或者其他什么?
1条答案
按热度按时间wgeznvg71#
不确定您的问题是什么,或者在运行代码时发生了什么,但乍一看,您是在声明变量之前使用它:
另外,您正在使用的自定义字段真的应该称为
custom_field
吗?