本文介绍了仅在每天的时间范围内启用Woocommerce商店购买的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试两次关闭,但无法正常工作。什么都没发生。
I am trying to create a shut down between two times, but it's not working. Nothing is happening.
这是我正在使用的代码:
Here's the code I'm using:
add_action( 'woocommerce_before_single_product_summary', 'shop_closed' );
add_action( 'woocommerce_before_shop_loop', 'shop_closed' );
function shop_closed() {
global $woocommerce;
date_default_timezone_set('Europe/London');
$start_time = mktime('16', '59', '59', date('m'), date('d'), date('Y'));
$end_time = mktime('08', '59', '59', date('m'), date('d'), date('Y'));
$now_time = time();
if ( $now_time > $start_time && $now_time < $end_time ) {
remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');
remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart');
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_login_form');
remove_action( 'woocommerce_before_checkout_form', 'woocommerce_checkout_coupon_form');
remove_action( 'woocommerce_checkout_order_review', 'woocommerce_order_review');
remove_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment');
$closed = esc_html__(' We are currently closed. Welcome back tomorrow morning at 09.00 AM. ', 'woocommerce' );
echo '<span class="shop-closed">' . $closed . '</span>'; } }
有什么想法让我错了吗?
Any ideas on where I'm going wrong with this?
推荐答案
尝试以下更有效的方法:
Try the following that should work in a much more better way:
// Utility conditional funtion for store open hours (returns boolean true when store is open)
function is_store_open() {
// Set Your shop time zone (http://php.net/manual/en/timezones.php)
date_default_timezone_set('Europe/London');
// Below your shop time and dates settings
$open_time = mktime('09', '00', '00', date('m'), date('d'), date('Y')); // 09:00:00
$end_time = mktime('17', '00', '00', date('m'), date('d'), date('Y')); // 17:00:00
$now = time(); // Current timestamp in seconds
return ( $now >= $start_time && $now <= $end_time ) ? true : false;
}
// Disable purchases on closing shop time
add_filter( 'woocommerce_variation_is_purchasable', 'disable_purchases_on_shop', 10, 2 );
add_filter( 'woocommerce_is_purchasable', 'disable_purchases_on_shop', 10, 2 );
function disable_purchases_on_shop( $purchasable, $product ) {
// Disable purchases on closing shop time
if( ! is_store_open() )
$purchasable = false;
return $purchasable;
}
// Cart and checkout validation
add_action( 'woocommerce_check_cart_items', 'conditionally_allowing_checkout' );
add_action( 'woocommerce_checkout_process', 'conditionally_allowing_checkout' );
function conditionally_allowing_checkout() {
if ( ! is_store_open() ) {
// Store closed
wc_add_notice( __("The Store is Closed… Purchases are allowed from 12:00 AM to 22:00 PM"), 'error' );
}
}
add_action( 'template_redirect', 'closing_shop_notice' );
function closing_shop_notice(){
if ( ! ( is_cart() || is_checkout() ) && ! is_store_open() ) {
// Store closed notice
$message = esc_html__(' We are currently closed. Welcome back tomorrow morning at 09.00 AM. ', 'woocommerce' );
wc_add_notice( '<span class="shop-closed">' . $message . '</span>', 'notice' );
}
}
代码会出现在您活跃孩子的function.php文件中主题(或活动主题)。经过测试并有效。
Code goes in function.php file of your active child theme (or active theme). Tested and works.
这篇关于仅在每天的时间范围内启用Woocommerce商店购买的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!