php - 在 Woocommerce 档案中为可变产品设置最大显示的可用库存数量
问题描述
我想在 Woocommerce 商店页面上设置可用商品的最大数量。
我正在使用在 Woocommerce 存档页面答案代码中显示所有产品类型的库存可用性,它做得很好,显示了 Woocommerce 商店中变体的可用库存。
但是我想显示一个最大数量,比如 50,如果库存实际上超过 50。如果库存中有 721 件商品,我只想让这个数字向客户显示 50。
我尝试在现有代码中添加另一个 if 语句,但它只是在显示中添加了另一行,显示实际总库存以及我的最大数量 50,如果总数高于 50。
解决方案
对于可变产品,以下内容将限制袜子数量显示在50
结束时50
:
add_action( 'woocommerce_after_shop_loop_item', 'wc_loop_get_product_stock_availability_text', 10 );
function wc_loop_get_product_stock_availability_text() {
global $wpdb, $product;
$max_stock_qty = 50; // Maximum Number of Available Stock qty
// For variable products
if( $product->is_type('variable') ) {
// Get the stock quantity sum of all product variations (children)
$stock_quantity = $wpdb->get_var("
SELECT SUM(pm.meta_value) FROM {$wpdb->prefix}posts as p
JOIN {$wpdb->prefix}postmeta as pm ON p.ID = pm.post_id
WHERE p.post_type = 'product_variation'
AND p.post_status = 'publish' AND p.post_parent = '".get_the_id()."'
AND pm.meta_key = '_stock' AND pm.meta_value IS NOT NULL
");
if ( $stock_quantity > 0 ) {
// Here we limit the sock quantity display to 50 when it's up to 50
$stock_quantity = $stock_quantity >= $max_stock_qty ? $max_stock_qty : $stock_quantity;
echo '<p class="stock in-stock">'. sprintf( __("%s in stock", "woocommerce"), $stock_quantity ).'</p>';
} else {
if ( is_numeric($stock_quantity) )
echo '<p class="stock out-of-stock">' . __("Out of stock", "woocommerce") . '</p>';
else
return;
}
}
// Other products types
else {
echo wc_get_stock_html( $product );
}
}
代码在您的活动子主题(或活动主题)的functions.php 文件中。它应该可以工作。
推荐阅读
- asp.net-mvc - Bootstrap 多选显示两个下拉控件
- python - Django密码重置功能视图
- android-studio - Android Studio 4 不正确的矢量可绘制预览
- scala - calculate difference in seconds between two columns with spark sql
- trains - 克隆实验是否适用于 sklearn 函数?
- python - 如何加载和运行位于 Google Colab 文件中的笔记本
- vb.net - VB.NET 如何删除便携式设备中存在的文件夹
- c# - 如何在C#中将char字符串转换为字符
- python - 在标准输出上显示 INFO 级别的 python 日志而不更改源代码
- rest-assured - 获取json数组响应的大小或长度(restAssured Response接口)