WooCommerce 배달 메시지에 date_i18n을 사용하여 날짜 형식 지정
WooCommerce를 사용하여 다음 후크를 사용하여 아카이브, 제품 페이지, 카트 및 결제에 연결했습니다.
woocommerce_before_single_product_summary
woocommerce_before_shop_loop
woocommerce_before_cart
woocommerce_before_checkout_form
그런 다음 if
인수 다음에 elseif
마지막으로 else
.
이러한 인수는 고객 / 방문자에게 표시되는 배달 메시지를 제어합니다.
내 주요 문제는 날짜 형식을 지정하는 것입니다.
전류 출력 :
월요일 오후 6시 이전 주문은 8 월 18 일 화요일 또는 늦어도 다음 날에 배송됩니다.
예상 출력 :
월요일 오후 6시 이전 주문은 화요일, 8 월 18 일 또는 늦어도 다음 날에 배송됩니다.
즉, 그 문장에 "the"와 "of"를 추가하여 더 명확하고 읽기 쉽게 만들고 싶습니다.
추가 "the"및 "of"는 1 일, 2 일, 5 일 또는 심지어 23 일과 같은 모든 형식과 함께 작동합니다.
" 날짜 및 시간 서식 지정 "WordPress Codex 페이지를 읽었 지만 "\ t \ h \ e"및 "\ o \ f"서식을 사용하더라도 날짜 표시 형식이 잘못되었습니다.
이것은 지금까지 내 코드입니다. 누구든지 나를 위해 날짜를 형식화하거나 원하는 출력으로 변경하는 방법을 설명해 주시면 감사하겠습니다.
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;
}
답변
l, \t\h\e jS \of F,
형식화 문자열을 사용 하여 코드와 함께 올바른 출력을 얻습니다. 또한 교체와 같은 일부 변경 만든 "day after tomorrow"
함께 "+2 days"
및 사용 sprintf()
기능 :
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>';
}
코드는 활성 자식 테마 (또는 활성 테마)의 functions.php 파일에 들어갑니다. 테스트 및 작동합니다.