当 WooCommerce 购物车包含虚拟产品时,如何隐藏结帐日期选择器?
Posted
技术标签:
【中文标题】当 WooCommerce 购物车包含虚拟产品时,如何隐藏结帐日期选择器?【英文标题】:How to hide checkout date picker when WooCommerce cart contains a virtual product? 【发布时间】:2022-01-17 05:15:26 【问题描述】:我需要停用由插件生成的结帐日期选择器当购物车上的产品是虚拟的。
这是他们为此提供的钩子:
apply_filters('woocommerce_delivery_disabled_dates', $disableDates);
根据这些信息,这是我的代码尝试:
add_filter( 'woocommerce_checkout_fields' , 'disable_dates' );
function disable_dates( $fields )
$only_virtual = true;
foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item )
// Check if there are non-virtual products
if ( ! $cart_item['data']->is_virtual() ) $only_virtual = false;
if( $only_virtual )
apply_filters(‘woocommerce_delivery_disabled_dates’, $disableDates);
return $fields;
但是这并没有给出预期的结果,有什么建议可以在购物车包含虚拟产品时隐藏结帐日期选择器吗?
【问题讨论】:
请问您有什么问题$disableDates
未定义。我相信这应该是$fields
- 或者我更喜欢在您的代码中将$fields
重命名为$disableDates
。
【参考方案1】:
无需使用woocommerce_checkout_fields
钩子,
逻辑可以应用在适当的钩子中。
所以你得到:
function filter_woocommerce_delivery_disabled_dates( $disableDates )
// WC Cart NOT null
if ( ! is_null( WC()->cart ) )
// Loop through cart items
foreach ( WC()->cart->get_cart_contents() as $cart_item_key => $cart_item )
// Check if there are virtual products
if ( $cart_item['data']->is_virtual() )
$disableDates = true;
break;
return $disableDates;
add_filter( 'woocommerce_delivery_disabled_dates', 'filter_woocommerce_delivery_disabled_dates', 10, 1 );
【讨论】:
【参考方案2】:主要问题是 $disabledDates
未定义 - 但是我会将 $fields
更改为 $disableDates
因为它更有意义。见下文:
apply_filters('woocommerce_delivery_disabled_dates', $disableDates);
add_filter( 'woocommerce_checkout_fields' , 'disable_dates' );
function disable_dates( $disableDates )
$only_virtual = true;
foreach( WC()->cart->get_cart() as $cart_item_key => $cart_item )
// Check if there are non-virtual products
if ( ! $cart_item['data']->is_virtual() ) $only_virtual = false;
if( $only_virtual )
apply_filters('woocommerce_delivery_disabled_dates', $disableDates);
return $disableDates;
$disableDates
变量是你命名为$fields
的钩子回调的输入参数(我认为)
附言。这只是基于您发布的代码的猜测。我有很多不清楚的地方,但是您原始代码中的$disableDates
显然应该有一个值。
【讨论】:
以上是关于当 WooCommerce 购物车包含虚拟产品时,如何隐藏结帐日期选择器?的主要内容,如果未能解决你的问题,请参考以下文章
php 活动门票加 - 当WooCommerce Ticket添加到购物车时,将其他WooCommerce产品添加到购物车
当鼠标移动到woocommerce中的购物车图标时,如何创建幻灯片以显示产品?