Định dạng ngày sử dụng date_i18n cho Thông báo gửi WooCommerce
Sử dụng WooCommerce, tôi đã kết nối vào kho lưu trữ, trang sản phẩm, giỏ hàng và thanh toán bằng các móc sau:
woocommerce_before_single_product_summary
woocommerce_before_shop_loop
woocommerce_before_cart
woocommerce_before_checkout_form
Sau đó, tôi đang sử dụng một if
đối số được theo sau bởi một elseif
và cuối cùng else
,.
Các đối số này kiểm soát thông điệp gửi được hiển thị cho khách hàng / khách truy cập.
Vấn đề chính của tôi là định dạng ngày.
Sản lượng hiện tại:
Các đơn đặt hàng được thực hiện trước 6 giờ chiều Thứ Hai sẽ được giao vào Thứ Ba, ngày 18 tháng 8 hoặc chậm nhất là ngày hôm sau.
Sản lượng mong đợi:
Các đơn đặt hàng được thực hiện trước 6 giờ chiều Thứ Hai sẽ được giao vào Thứ Ba, ngày 18 tháng 8 hoặc chậm nhất là một ngày sau đó.
Nói cách khác, tôi muốn thêm "the" và "of" vào câu đó, làm cho nó rõ ràng và dễ đọc hơn.
Phần bổ sung "the" và "of" sẽ hoạt động với bất kỳ định dạng nào, chẳng hạn như ngày 1, 2, 5 hoặc thậm chí 23 về các ngày trong tháng.
Tôi đã đọc trang WordPress Codex " Định dạng Ngày và Giờ ", nhưng ngay cả khi sử dụng định dạng "\ t \ h \ e" và "\ o \ f", hiển thị ngày được định dạng không chính xác.
Đây là mã của tôi cho đến nay. Nếu ai đó có thể định dạng ngày cho tôi hoặc giải thích cách thay đổi nó thành đầu ra mong muốn của tôi, tôi sẽ rất biết ơn.
add_action( 'woocommerce_before_single_product_summary', 'product_delivery_message' );
add_action( 'woocommerce_before_shop_loop', 'product_delivery_message' );
add_action( 'woocommerce_before_cart', 'product_delivery_message' );
add_action( 'woocommerce_before_checkout_form', 'product_delivery_message' );
function product_delivery_message() {
date_default_timezone_set( 'Europe/Paris' );
// delivery cut-off for friday and weekend
if ( date_i18n( 'N' ) >= 5 ) {
$delivery_day = date_i18n( "l, F jS, ", strtotime( "next wednesday" )); $order_before = "Monday";
}
// on monday to thursday before XX (currently set to 18 = 6PM), delivery will be on next week tuesday
elseif ( date_i18n( 'H' ) >= 18 ) {
$delivery_day = date_i18n( "l, F jS, ", strtotime( "day after tomorrow" )); $order_before = "tomorrow";
}
// monday to thursday within the cut-off time, delivery will be next day (tomorrow)
else {
$delivery_day = date_i18n( "l, F jS, ", strtotime( "tomorrow" )); $order_before = "today";
}
$delivery_message = "<div class='product-delivery-message' style='clear:both'>Orders made before 6PM {$order_before} will be delivered on {$delivery_day} or the day after at the latest.</div>"; echo $delivery_message;
}
Trả lời
Sử dụng l, \t\h\e jS \of F,
chuỗi định dạng, tôi nhận được đầu ra chính xác với mã của bạn. Tôi cũng đã thực hiện một số thay đổi như thay thế "day after tomorrow"
bằng "+2 days"
và sử dụng sprintf()
chức năng:
add_action( 'woocommerce_before_single_product_summary', 'product_delivery_message' );
add_action( 'woocommerce_before_shop_loop', 'product_delivery_message' );
add_action( 'woocommerce_before_cart', 'product_delivery_message' );
add_action( 'woocommerce_before_checkout_form', 'product_delivery_message' );
function product_delivery_message() {
date_default_timezone_set( 'Europe/Paris' );
$date_format = __('l, \t\h\e jS \of F,', 'woocommerce'); // 1. Delivery cut-off for friday and weekend if ( date_i18n('N') >= 5 ) { $delivery_day = date_i18n( $date_format, strtotime( "next wednesday" ) ); $order_before = __('Monday', 'woocommerce');
}
// 2. From monday to thursday before XX (currently set to 18 = 6PM), delivery will be on next week tuesday
elseif ( date_i18n('H') >= 18 ) {
$delivery_day = date_i18n( $date_format, strtotime( "+2 days" ) );
$order_before = __('tomorrow', 'woocommerce'); } // 3. From monday to thursday within the cut-off time, delivery will be next day (tomorrow) else { $delivery_day = date_i18n( $date_format, strtotime( "+1 day" ) ); $order_before = __('today', 'woocommerce');
}
$message = sprintf( __("Orders made before 6PM %s will be delivered on %s or the day after at the latest.", "woocommerce"), $order_before, $delivery_day ); echo '<div class="product-delivery-message" style="clear:both">' . $message . '</div>';
}
Mã nằm trong tệp functions.php của chủ đề con đang hoạt động (hoặc chủ đề hoạt động) của bạn. Đã thử nghiệm và hoạt động.