gpt4 book ai didi

php - 当所有变体都缺货时,显示在 WooCommerce 可变产品上售罄

转载 作者:行者123 更新时间:2023-12-05 00:54:48 26 4
gpt4 key购买 nike

在 WooCommerce 中,我使用以下功能,如果产品缺货,它会在产品缩略图上添加售罄文本:

add_action( 'woocommerce_before_shop_loop_item_title', 'bbloomer_display_sold_out_loop_woocommerce' );

function bbloomer_display_sold_out_loop_woocommerce() {
global $product;
if ( ! $product->is_in_stock() ) {
echo '<span class="soldout">Sold Out</span>';
}
}

它适用于简单的产品,但不适用于可变产品。

对于具有变体的可变产品,如果我将除 1 变体之外的所有变体设置为 0 库存数量,我注意到已售罄消息仍显示在缩略图上。从技术上讲,这是不正确的,因为我们确实有一些库存。

有人知道如何更改下面的代码来处理这个问题吗?

最佳答案

您可以创建一个自定义条件函数来检查变量产品的所有变体是否“缺货”,如下所示:

function is_variable_product_out_of_stock( $product ) {
$children_count = 0; // initializing
$variation_ids = $product->get_visible_children();

// Loop through children variations of the parent variable product
foreach( $variation_ids as $variation_id ) {{
$variation = wc_get_product($_variation_id); // Get the product variation Object

if( ! $variation->is_in_stock() ) {
$children_count++; // count out of stock children
}
}
// Compare counts and return a boolean
return count($variation_ids) == $children_count ? true : false;
}

然后你将在下面重新访问的钩子(Hook)函数中使用它:

add_action( 'woocommerce_before_shop_loop_item_title', 'display_products_loop_out_of_stock' );

function display_products_loop_out_of_stock() {
global $product;

if ( ( ! $product->is_type('variable') && ! $product->is_in_stock() )
|| ( $product->is_type('variable') && is_variable_product_out_of_stock( $product ) ) ) {
echo '<span class="soldout">Sold Out</span>';
}
}

代码进入事件子主题(或事件主题)的functions.php 文件中。它应该可以工作。

关于php - 当所有变体都缺货时,显示在 WooCommerce 可变产品上售罄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65654092/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com