Включить / отключить на основе времени Добавить в корзину в Woocommerce - PullRequest
0 голосов
/ 25 января 2019

Я бы хотел, чтобы мой интернет-магазин был деактивирован или активирован на определенный период времени. Когда магазин деактивирован, вы можете видеть товары, но не можете положить их в корзину. Если у вас уже есть вещи в корзине, вы не можете оформить заказ и оплатить. Несмотря на все это, вы можете видеть товары, но не можете их покупать.

Время работы магазина будет следующим:

  • Онлайн: с понедельника по воскресенье с 12 до 22 часов
  • Не в сети: оставшееся время должно быть деактивировано

Это возможно?

Я уже нашел поток здесь , но он не объясняет, как именно выполнить всю настройку.

Надеюсь, вы мне поможете.

Ответы [ 3 ]

0 голосов
/ 26 января 2019

Следующий код ограничит часы работы вашего магазина с 12:00 до 22:00, отключив добавление в корзину и оформление заказа в часы закрытия.

Вам необходимо установить часовой пояс в настройках первой функции:

// 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

0 голосов
/ 29 января 2019

С часами работы все было немного сложнее, поэтому я снова искал плагин.Часы работы были: Мо, Мы, Чт 12-14 часов и 16: 45-21: 45 Ту: закрыто Пт, Сб, Су: 12-21: 45

Я мог бы запрограммировать это сампример LoicTheAztec, но у меня нет времени.Плагин, который я нашел сейчас, называется Woocommerce Store Closing от Ozibal https://codecanyon. net / item / woocommerce-store-close / 19398781

, он стоит 19 долларов и действительно ли он хорош.Большое спасибо <3 </p>

0 голосов
/ 25 января 2019

Ваши решения находятся в этом плагине: Woocommerce Open Close

Этот плагин делает именно то, что вам нужно. Если вы не хотите использовать плагин, я бы порекомендовал разобрать файлы плагинов и посмотреть, как они его разработали. Вы узнаете, как они управляют часовыми поясами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...