Уведомление об условной доставке WooCommerce в зависимости от рабочих дней и времени

На основе условного уведомления о доставке на основе времени и даты в коде ответа Woocommerce я пытаюсь отобразить сообщение о доставке со следующим слегка измененным кодом:

Я пробую этот код, но не нахожу результата, надеюсь:

add_action( 'woocommerce_before_customer_login_form', 'next_day_delivery' );
add_action( 'woocommerce_before_customer_login_form', 'next_day_delivery' );
add_action( 'woocommerce_before_checkout_form', 'next_day_delivery' );
add_action( 'woocommerce_before_shop_loop', 'next_day_delivery' );
add_action( 'woocommerce_before_single_product_summary', 'next_day_delivery' );
add_action( 'woocommerce_before_cart', 'next_day_delivery' );

function next_day_delivery() {
    if( WC()->cart->is_empty() )
        return; // Exit

    // Set the time zone
    date_default_timezone_set('Europe/Paris');

    // From Monday to Thursday
    $is_week_days  = in_array( date('w'), array( 3, 4, 5, 6, 0 ) ) ? true : false;
    $is_monday     = date('w') == 1 ? true : false; // Monday
    $is_tuesday     = date('w') == 2 ? true : false; // Tuesday
    $end_time      = mktime('21', '00', '00', date('m'), date('d'), date('Y'));
    $now_time      = time();
    $after_tomorow = date('l', strtotime('+2 days'));

    $dateDiff      = intval(($end_time - $now_time)/60);
    $diff_hours    = intval($dateDiff/60);
    $diff_minutes  = $dateDiff%60;
    $hours_label   = _n( 'heure', 'heures', $diff_hours, 'wooocommerce' );
    $minutes_label = _n( 'minute', 'minutes', $diff_minutes, 'wooocommerce' );


    if ( $is_monday && $now_time or $is_tuesday && $now_time < $end_time ) {
        // print the information notice
        $message = sprintf( __( '%s left to be delivered tomorrow!', 'woocommerce' ),
        $diff_hours.' '.$hours_label.' and '.$diff_minutes.' '.$minutes_label);
    }
        elseif ( $end_time <= $now_time && $is_week_days ) {
        $message = sprintf( __( 'Your order will be delivered this %s.', 'woocommerce' ), $after_tomorow );
    } else {
        $message = __( 'Your order will be prepared and shipped next upcoming monday and delivered on tuesday.', 'woocommerce' );
    }
    wc_print_notice( $message, 'success' );
}

Но я не могу заставить его работать для моих нужд…

Мы доставляем нашу продукцию каждый четверг, пятницу и субботу различными местными пунктами самовывоза. Поэтому я хотел бы иметь сообщение о доставке, использующее следующую логику:

  • заказы, сделанные каждую неделю до 21:00 вторника (21:00 в часовом поясе Европа/Париж), должно быть указано: %s осталось доставить с четверга!
  • заказы, сделанные каждую неделю после 21:00 вторника (21:00 в часовом поясе Европа/Париж), должны сказать, что Ваш заказ будет подготовлен и отправлен в следующую среду и доставлен в следующий четверг.

Любая помощь будет очень признательна.


person chancel    schedule 18.01.2021    source источник