WooCommerce wc_update_product_stock 在数据库中将数字存储为十进制
WooCommerce wc_update_product_stock stores number as decimal in database
当我使用这个功能时
wc_update_product_stock();
为了设置产品库存,它总是在我的数据库中将数值保存为浮点数。
据我所知这个函数接受三个参数
wc_update_product_stock( $product, $stock_quantity, $operation );
但是当我这样使用它时
wc_update_product_stock( 2319 , 5 , 'set');
它将 5 的值存储为 5.000000,这发生在我尝试使用的任何其他数值上。
知道为什么吗?
下面是更新产品库存的函数 - 它使用 %f
作为库存数量 - 所以它的 treated as float
- more details
public function update_product_stock( $product_id_with_stock, $stock_quantity = null, $operation = 'set' ) {
global $wpdb;
add_post_meta( $product_id_with_stock, '_stock', 0, true );
// Update stock in DB directly.
switch ( $operation ) {
case 'increase':
// phpcs:ignore WordPress.VIP.DirectDatabaseQuery.DirectQuery
$wpdb->query(
$wpdb->prepare(
"UPDATE {$wpdb->postmeta} SET meta_value = meta_value + %f WHERE post_id = %d AND meta_key='_stock'",
$stock_quantity,
$product_id_with_stock
)
);
break;
case 'decrease':
// phpcs:ignore WordPress.VIP.DirectDatabaseQuery.DirectQuery
$wpdb->query(
$wpdb->prepare(
"UPDATE {$wpdb->postmeta} SET meta_value = meta_value - %f WHERE post_id = %d AND meta_key='_stock'",
$stock_quantity,
$product_id_with_stock
)
);
break;
default:
// phpcs:ignore WordPress.VIP.DirectDatabaseQuery.DirectQuery
$wpdb->query(
$wpdb->prepare(
"UPDATE {$wpdb->postmeta} SET meta_value = %f WHERE post_id = %d AND meta_key='_stock'",
$stock_quantity,
$product_id_with_stock
)
);
break;
}
wp_cache_delete( $product_id_with_stock, 'post_meta' );
}
要直接更新为整数(原样)- 使用此函数 update_post_meta($product_id, '_stock', 15);
当我使用这个功能时
wc_update_product_stock();
为了设置产品库存,它总是在我的数据库中将数值保存为浮点数。
据我所知这个函数接受三个参数
wc_update_product_stock( $product, $stock_quantity, $operation );
但是当我这样使用它时
wc_update_product_stock( 2319 , 5 , 'set');
它将 5 的值存储为 5.000000,这发生在我尝试使用的任何其他数值上。
知道为什么吗?
下面是更新产品库存的函数 - 它使用 %f
作为库存数量 - 所以它的 treated as float
- more details
public function update_product_stock( $product_id_with_stock, $stock_quantity = null, $operation = 'set' ) {
global $wpdb;
add_post_meta( $product_id_with_stock, '_stock', 0, true );
// Update stock in DB directly.
switch ( $operation ) {
case 'increase':
// phpcs:ignore WordPress.VIP.DirectDatabaseQuery.DirectQuery
$wpdb->query(
$wpdb->prepare(
"UPDATE {$wpdb->postmeta} SET meta_value = meta_value + %f WHERE post_id = %d AND meta_key='_stock'",
$stock_quantity,
$product_id_with_stock
)
);
break;
case 'decrease':
// phpcs:ignore WordPress.VIP.DirectDatabaseQuery.DirectQuery
$wpdb->query(
$wpdb->prepare(
"UPDATE {$wpdb->postmeta} SET meta_value = meta_value - %f WHERE post_id = %d AND meta_key='_stock'",
$stock_quantity,
$product_id_with_stock
)
);
break;
default:
// phpcs:ignore WordPress.VIP.DirectDatabaseQuery.DirectQuery
$wpdb->query(
$wpdb->prepare(
"UPDATE {$wpdb->postmeta} SET meta_value = %f WHERE post_id = %d AND meta_key='_stock'",
$stock_quantity,
$product_id_with_stock
)
);
break;
}
wp_cache_delete( $product_id_with_stock, 'post_meta' );
}
要直接更新为整数(原样)- 使用此函数 update_post_meta($product_id, '_stock', 15);