【发布时间】:2021-11-21 18:59:44
【问题描述】:
我想限制在我的产品页面上显示库存(仅在前端),以限制过高的库存。
我的问题和这篇文章类似:Set a max displayed available stock quantity on Woocommerce archives for variable products
其中,下面的代码显示了类似的内容,但有几个缺点:
- 它在产品目录页面上显示新库存,而不是直接替换产品页面上的库存
- 它仅适用于可变产品,不适用于简单产品
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 );
}
}
考虑到这些条件,返回值应替换产品页面上显示的库存:
- 当股票大于 50 时,显示 50 到 100 之间的随机数。
- 如果股票少于 50,则显示股票的实际价值。
我被困住了,我不知道我是否朝着正确的方向前进, 提前非常感谢!
【问题讨论】:
标签: php wordpress woocommerce stock