基于时间的启用/禁用Woocommerce中的添加到购物车

时间:2019-01-25 16:44:25

标签: php wordpress date time woocommerce

我希望我的网上商店在一段时间内被停用或激活。停用商店后,您可以看到产品,但不能将其放入购物车中。如果您的购物车中已经有东西,则无法结帐并付款。尽管如此,您仍然可以看到产品,但无法购买。

购物时间如下:

  • 在线:周一至周日上午12点至下午22点
  • 离线:剩余时间将被停用

有可能吗?

我已经找到了一个线程here,但是并没有确切说明如何进行所有自定义。

希望你能帮助我。

3 个答案:

答案 0 :(得分:1)

以下代码将您的商店的营业时间限制为上午12点至下午22点,并在营业时间内禁用添加到购物车和结帐流程。

您将必须在第一个功能设置中设置时区:

// 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/Paris');

    // Below your shop time and dates settings
    $start_time = mktime('12', '00', '00', date('m'), date('d'), date('Y')); // 12:00:00
    $end_time   = mktime('22', '00', '00', date('m'), date('d'), date('Y')); // 22: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
        wc_add_notice( __("The Store is Closed… Purchases are allowed from 12:00 AM to 22:00 PM"), 'notice' );
    }
}

代码进入您的活动子主题(或活动主题)的function.php文件中。经过测试,可以正常工作。

enter image description here

答案 1 :(得分:0)

您的解决方案位于此插件中:Woocommerce Open Close

此插件完全可以满足您的需求。如果您不想使用插件,我建议您拆下插件文件,并查看它们是如何开发的。您将发现他们如何管理时区。

答案 2 :(得分:0)

开放时间有点复杂,所以我又找了一个插件。 营业时间为: Mo,We,Th 12-14点和16:45-21:45 涂:关闭 周五,周六,苏:12-21:45

我本可以用LoicTheAztec的例子自己编写程序,但是我没有时间。 我现在发现的插件称为Ozibal的Woocommerce Store Closing https://codecanyon。 net / item / woocommerce-store-closing / 19398781

它的价格是19美元,很好吗?非常感谢<3