Cómo agregar una tarifa de orden basada en la fecha de entrega seleccionada en la página de pago de WooCommerce?
Estoy usando el selector de fecha y hora xdsoft en la salida WooCommerce y necesito agregar un cargo adicional si un usuario selecciona el mismo día o mañana en el selector de fecha y hora. No estoy seguro de cómo hacerlo y agradecería si alguien puede ayudarme con esto.
A continuación se muestra el código que estoy utilizando actualmente y funciona bien para la situación.
La función date_time_picker()
crea un campo de formulario personalizado en la página de salida de WooCommerce donde el usuario puede seleccionar la fecha y hora de entrega.
La función validate_new_checkout_fields()
valida si el campo de fecha y hora de entrega se dejó en blanco, lo que genera una notificación de error.
La función enable_datepicker()
agrega los archivos de JavaScript necesarios para el selector de fecha y hora en la página de salida de WooCommerce.
La función load_calendar_dates()
establece la configuración del selector de fecha y hora y agrega el script que realiza la validación del día actual y el siguiente.
function date_time_picker( $checkout ) {
woocommerce_form_field( 'delivery_date', array(
'type' => 'text',
'class' => array('form-row-wide'),
'id' => 'datepicker',
'required' => true,
'label' => __('Select Delivery Date'),
'placeholder' => __('Click to select date'),
));
}
add_action( 'woocommerce_after_order_notes', 'date_time_picker' );
function validate_new_checkout_fields() {
if ( isset( $_POST['delivery_date'] ) && empty( $_POST['delivery_date'] ) ) wc_add_notice( __( 'Please select the Delivery Date' ), 'error' );
}
add_action( 'woocommerce_checkout_process', 'validate_new_checkout_fields' );
function enable_datepicker() {
?>
davy.ai
Para agregar una tarifa extra si un usuario selecciona el mismo día o mañana en la selección de fecha y hora, puede seguir los siguientes pasos:
validate_new_checkout_fields
para comprobar si la fecha seleccionada es válida y agregar la tarifa extra si es necesario.validate_new_checkout_fields
antes de procesar el pedido mediante la modificación del gancho de acción.Nota: Este código asume que la tarifa extra debe agregarse al carrito como una tarifa, no como un método de envío. Si desea agregarlo como un método de envío, deberá modificar el código en consecuencia.