Включение / отключение функции добавления в корзину WooCommerce на основе времени

Я ищу способ сделать это:

  • С понедельника по воскресенье с 17:00 до 14:00 добавление в корзину включено, до или после этого времени кнопка добавления в корзину должна быть отключена.

  • Во вторник полный день Магазин закрыт, поэтому добавление в корзину отключено.

Я нашел этот фрагмент, чтобы отключить добавление в корзину, но без указания времени и дня:

/**
 * @snippet       WooCommerce Holiday/Pause Mode
 * @how-to        Watch tutorial @ https://businessbloomer.com/?p=19055
 * @sourcecode    https://businessbloomer.com/?p=20862
 * @author        Rodolfo Melogli
 * @testedwith    WooCommerce 2.6.4
 */

// Trigger Holiday Mode
add_action ('init', 'bbloomer_woocommerce_holiday_mode');

// Disable Cart, Checkout, Add Cart
function bbloomer_woocommerce_holiday_mode() {
    remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
    remove_action( 'woocommerce_proceed_to_checkout', 'woocommerce_button_proceed_to_checkout', 20 );
    remove_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20 );
    add_action( 'woocommerce_before_main_content', 'bbloomer_wc_shop_disabled', 5 );
    add_action( 'woocommerce_before_cart', 'bbloomer_wc_shop_disabled', 5 );
    add_action( 'woocommerce_before_checkout_form', 'bbloomer_wc_shop_disabled', 5 );
}

// Show Holiday Notice
function bbloomer_wc_shop_disabled() {
    wc_print_notice( 'Our Online Shop is Closed Today :)', 'error');
} 

Я плохо говорю по-английски, но я надеюсь, что вы можете мне помочь.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
399
2

Ответы 2

Вот что вам нужно для начала: этот фрагмент кода проверит, сегодня вторник, и если это так, то функция добавления в корзину будет отключена.

function bbloomer_woocommerce_holiday_mode() {

    $disable_cart = my_wc_disable_add_to_cart();

    if ( $disable_cart ) {
        remove_action( 'woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart', 10 );
        remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_add_to_cart', 30 );
        remove_action( 'woocommerce_proceed_to_checkout', 'woocommerce_button_proceed_to_checkout', 20 );
        remove_action( 'woocommerce_checkout_order_review', 'woocommerce_checkout_payment', 20 );
        add_action( 'woocommerce_before_main_content', 'bbloomer_wc_shop_disabled', 5 );
        add_action( 'woocommerce_before_cart', 'bbloomer_wc_shop_disabled', 5 );
        add_action( 'woocommerce_before_checkout_form', 'bbloomer_wc_shop_disabled', 5 );
    }
}

function my_wc_disable_add_to_cart() {
    // Tuesday is day number 2 of the week
    $day_of_week = date("w", current_time());

    if ( $day_of_week === 2 )
        return true;

    return false;
}

Это будет аналогичный процесс, добавляющий другие временные критерии для включения / отключения корзины.

Я пытаюсь написать свой собственный фрагмент, и это то, чего я до сих пор добился:

add_action( 'wp_head', 'disable_checkout_sunday' );
function disable_checkout_sunday(){
if (date(D) == "Sun"){
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');

 }
}

Другие вопросы по теме