【问题标题】:Time based Enable/Disable Add to Cart in Woocommerce在 Woocommerce 中基于时间启用/禁用添加到购物车
【发布时间】:2019-06-19 12:53:37
【问题描述】:

我希望在一段时间内停用或激活我的在线商店。店铺停用时,您可以看到商品,但无法将商品放入购物车。如果您的购物车中已有商品,则无法结账和付款。尽管如此,您可以看到产品,但无法购买。

开店时间如下:

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

这可能吗?

我已经找到了一个帖子here,但它并没有准确解释如何进行所有的定制。

我希望你能帮助我。

【问题讨论】:

    标签: php wordpress date time woocommerce


    【解决方案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 文件中。经过测试并且可以工作。

    【讨论】:

      【解决方案2】:

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

      我可以用 LoicTheAztec 的例子自己编程,但我没有时间。 我现在找到的插件叫做 Woocommerce Store Closing by Ozibal https://codecanyon。 net/item/woocommerce-store-closing/19398781

      它的价格是 19 美元,非常好。非常感谢

      【讨论】:

        【解决方案3】:

        您的解决方案在这个插件中:Woocommerce Open Close

        这个插件正是你需要的。如果您不想使用插件,我建议您拆除插件文件并查看他们是如何开发的。您会发现他们是如何管理时区的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-02
          • 1970-01-01
          • 2018-09-20
          • 2018-09-30
          • 2021-01-31
          • 2014-01-01
          • 2018-08-29
          • 2020-06-21
          相关资源
          最近更新 更多