Enable Woocommerce shop purchases only during a daily time range

非 Y 不嫁゛ 提交于 2019-12-01 13:46:08

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' );
    }
}

Code goes in function.php file of your active child theme (or active theme). Tested and works.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!