php - 在 Woocommerce 存档页面中显示所有产品类型的库存可用性
问题描述
我正在使用此代码显示产品库存:
add_action( 'woocommerce_after_shop_loop_item', 'display_variable_product_stock_quantity', 10 );
function display_variable_product_stock_quantity(){
wc_get_variable_product_stock_quantity( 'echo_html' );
}
function show_stock() {
global $product;
if ( $product->stock ) { // if manage stock is enabled
if ( ! $product->managing_stock() && ! $product->is_in_stock() )
echo '';
}
if ( number_format($product->stock,0,'','') > 0 ) { // if stock is low
echo '<div class="remainingpc" style="text-align:center;"><font color="red"> ' . number_format($product->stock,0,'','') . ' Pcs Left</font></div>';
}
else {
echo '<div class="remaining" style="text-align:center;"><font color="red">Out of Stock</font></div>';
}
}
add_action('woocommerce_after_shop_loop_item','show_stock', 10);
如果产品是一个变量,我使用这个答案代码来显示库存可用性:
Get the total stock from a variable product In Woocommerce
如何将这些代码合并到一个条件函数中?
例如。如果产品是简单产品,变量产品的其他代码将不会显示。
解决方案
以下将处理 woocommerce 存档产品页面中所有产品类型的库存可用性显示为商店。
要处理变量以外的其他产品类型的库存可用性显示,您可以改用专用函数wc_get_stock_html()
,这将简化代码。
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;
// 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 ) {
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 );
}
}
代码位于您的活动子主题(或活动主题)的 function.php 文件中。测试和工作。
推荐阅读
- sql-server - 无法根据 MonthNumber 和 YearNumber SSRS 2010 获取值
- vue.js - 无法上传图片Vue
- c - c lang文本文件输入行中的数字总和
- vim - vim/neovim 中的“NORMAL > PASTE”模式是什么?
- z3 - 同一公理的编码差异
- rest - Spring-boot REST 安全配置角色无法正常工作
- python - 如何从 QSyntaxHighlighter 中的 QTextCharFormat 获取工作 setToolTip?
- python - 遍历二维数组时列表索引超出范围
- java - Java Gson List - 如何访问单个项目
- ruby-on-rails - Heroku pg:push 将我的表置于错误的 schma 中