php-获取也适用于Woocommerce产品变体的is_purchasable挂钩
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php-获取也适用于Woocommerce产品变体的is_purchasable挂钩,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2491字,纯文字阅读大概需要4分钟。
内容图文
自何时/直到何时,我已经做了2个自定义产品字段-可用性.因此,如果当前日期在这些设置的可用日期之间,则可以购买产品,否则-不能.但是,只有在发布带有变体的产品之前,一切都可以正常工作.这就好像产品版本会忽略这些自定义的可用性字段/值,即使当前日期不在设置的可用性日期之间,也仍然允许向购物车添加版本.
function hide_product_if_unavailable( $is_purchasable, $object ) {
$date_from = get_post_meta( $object->get_id(), '_availability_schedule_dates_from' );
$date_to = get_post_meta( $object->get_id(), '_availability_schedule_dates_to' );
$current_date = current_time('timestamp');
if ( strlen($date_from[0]) !== 0 ) {
if ( ( $current_date >= (int)$date_from[0] ) && ( $current_date <= (int)$date_to[0] ) ) {
return true;
} else {
return false;
}
} else {
# Let adding product to cart if Availability fields was not set at all
return true;
}
}
add_filter( 'woocommerce_is_purchasable', 'hide_product_if_unavailable', 10, 2 );
我试图在woocommerce_is_purchasable下面添加另一个过滤器:
add_filter( 'woocommerce_variation_is_purchasable', 'hide_product_if_unavailable', 10, 2 );
但是变化仍然忽略可用性字段.
解决方法:
对所有产品类型(包括产品变体)尝试以下重新审阅的代码:
add_filter( 'woocommerce_is_purchasable', 'purchasable_product_date_range', 20, 2 );
function purchasable_product_date_range( $purchasable, $product ) {
$date_from = (int) get_post_meta( $product->get_id(), '_availability_schedule_dates_from', true );
$date_to = (int) get_post_meta( $product->get_id(), '_availability_schedule_dates_to', true );
if( empty($date_from) || empty($date_to) )
return $purchasable; // Exit (fields are not set)
$current_date = (int) current_time('timestamp');
if( ! ( $current_date >= $date_from && $current_date <= $date_to ) )
$purchasable = false;
return $purchasable;
}
要使产品变体正常工作,您需要获取父产品ID,因为您的变体没有此日期范围自定义字段:
add_filter( 'woocommerce_variation_is_purchasable', 'purchasable_variation_date_range', 20, 2 );
function purchasable_variation_date_range( $purchasable, $product ) {
$date_from = (int) get_post_meta( $product->get_parent_id(), '_availability_schedule_dates_from', true );
$date_to = (int) get_post_meta( $product->get_parent_id(), '_availability_schedule_dates_to', true );
if( empty($date_from) || empty($date_to) )
return $purchasable; // Exit (fields are not set)
$current_date = (int) current_time('timestamp');
if( ! ( $current_date >= $date_from && $current_date <= $date_to ) )
$purchasable = false;
return $purchasable;
}
代码进入您的活动子主题(或活动主题)的function.php文件中.经过测试和工作.
内容总结
以上是互联网集市为您收集整理的php-获取也适用于Woocommerce产品变体的is_purchasable挂钩全部内容,希望文章能够帮你解决php-获取也适用于Woocommerce产品变体的is_purchasable挂钩所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。