显示 "In Stock" 没有托管库存的 WooCommerce 变体通知
Display "In Stock" notice for WooCommerce variations with no Managed Stock
我在特定情况下需要帮助。在 WooCommerce 中,如果为简单产品或变体启用了“管理库存”,则会在产品页面中显示通知 => 例如 [此示例][1]
但是,如果没有启用“管理库存”,那么就没有通知,我觉得很遗憾,因为即使我不管理库存数量,我仍然想通知我的客户它恰好有库存.
我找到了下面的代码。对于简单的产品,它可以毫无问题地工作。但是,对于可变产品,即使在选择变体 之前,也会显示此消息。这当然不行,选择变体后才应该显示这段代码。
有人可以帮我解决这个问题吗?对于可变产品,此消息应仅在选择特定变体后显示。
我制作了一个视频截图以更说明问题:https://sgevcen.tinytake.com/tt/NDQzNTU2OF8xNDAyNTU2NA
function mycustom_shop_display_stock() {
global $product;
if ( !$product->get_manage_stock() && $product->is_in_stock() ) {
echo '<p class="stock in-stock">In Stock</p>';
}
}
add_action( 'woocommerce_before_add_to_cart_button', 'mycustom_shop_display_stock', 11 );
[1]: https://i.stack.imgur.com/aFnN1.png
改为尝试以下方法,它应该允许仅针对可变产品的变体(以及简单产品)显示您的自定义库存可用性:
add_filter( 'woocommerce_get_stock_html', 'filter_wc_get_stock_html', 10, 2 );
function filter_wc_get_stock_html( $html, $product ) {
if ( ! $product->is_type('variable') && ! $product->get_manage_stock() && $product->is_in_stock() ) {
$html = '<p class="stock in-stock">' . __( "In Stock", "woocommerce" ) . '</p>';
}
return $html;
}
代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
要排除某些产品类别,请使用以下内容(与您的评论相关):
add_filter( 'woocommerce_get_stock_html', 'filter_wc_get_stock_html', 10, 2 );
function filter_wc_get_stock_html( $html, $product ) {
// Here define the product categories to be excluded (can be term Ids, slugs or names)
$terms_excl = array('hoodies', 'albums');
$product_id = $product->is_type('variation') ? $product->get_parent_id() : $product->get_id();
if ( ! $product->is_type('variable') && ! $product->get_manage_stock() && $product->is_in_stock()
&& ! has_term( $terms_excl, 'product_cat', $product_id ) ) {
$html = '<p class="stock in-stock">' . __( "In Stock", "woocommerce" ) . '</p>';
}
return $html;
}
代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
相关主题:
我在特定情况下需要帮助。在 WooCommerce 中,如果为简单产品或变体启用了“管理库存”,则会在产品页面中显示通知 => 例如 [此示例][1]
但是,如果没有启用“管理库存”,那么就没有通知,我觉得很遗憾,因为即使我不管理库存数量,我仍然想通知我的客户它恰好有库存.
我找到了下面的代码。对于简单的产品,它可以毫无问题地工作。但是,对于可变产品,即使在选择变体 之前,也会显示此消息。这当然不行,选择变体后才应该显示这段代码。
有人可以帮我解决这个问题吗?对于可变产品,此消息应仅在选择特定变体后显示。
我制作了一个视频截图以更说明问题:https://sgevcen.tinytake.com/tt/NDQzNTU2OF8xNDAyNTU2NA
function mycustom_shop_display_stock() {
global $product;
if ( !$product->get_manage_stock() && $product->is_in_stock() ) {
echo '<p class="stock in-stock">In Stock</p>';
}
}
add_action( 'woocommerce_before_add_to_cart_button', 'mycustom_shop_display_stock', 11 );
[1]: https://i.stack.imgur.com/aFnN1.png
改为尝试以下方法,它应该允许仅针对可变产品的变体(以及简单产品)显示您的自定义库存可用性:
add_filter( 'woocommerce_get_stock_html', 'filter_wc_get_stock_html', 10, 2 );
function filter_wc_get_stock_html( $html, $product ) {
if ( ! $product->is_type('variable') && ! $product->get_manage_stock() && $product->is_in_stock() ) {
$html = '<p class="stock in-stock">' . __( "In Stock", "woocommerce" ) . '</p>';
}
return $html;
}
代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
要排除某些产品类别,请使用以下内容(与您的评论相关):
add_filter( 'woocommerce_get_stock_html', 'filter_wc_get_stock_html', 10, 2 );
function filter_wc_get_stock_html( $html, $product ) {
// Here define the product categories to be excluded (can be term Ids, slugs or names)
$terms_excl = array('hoodies', 'albums');
$product_id = $product->is_type('variation') ? $product->get_parent_id() : $product->get_id();
if ( ! $product->is_type('variable') && ! $product->get_manage_stock() && $product->is_in_stock()
&& ! has_term( $terms_excl, 'product_cat', $product_id ) ) {
$html = '<p class="stock in-stock">' . __( "In Stock", "woocommerce" ) . '</p>';
}
return $html;
}
代码进入您的活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
相关主题: