/**
* Agregar campo de fecha en el Checkout de WooCommerce con restricción de 7 dÃas de anticipación.
*/
// 1. Mostrar el campo de fecha en el formulario de Checkout
add_action( 'woocommerce_after_order_notes', 'rosado_agregar_campo_fecha_checkout' );
function rosado_agregar_campo_fecha_checkout( $checkout ) {
$fecha_minima = date( 'Y-m-d', strtotime( '+7 days' ) );
echo '
';
}
// 2. Validar la fecha en el servidor al procesar la compra
add_action( 'woocommerce_checkout_process', 'rosado_validar_fecha_checkout' );
function rosado_validar_fecha_checkout() {
if ( ! isset( $_POST['fecha_entrega'] ) || empty( $_POST['fecha_entrega'] ) ) {
wc_add_notice( 'Por favor selecciona la fecha de entrega para tu pedido.', 'error' );
} else {
$fecha_ingresada = strtotime( $_POST['fecha_entrega'] );
$fecha_limite = strtotime( '+7 days 00:00:00' );
if ( $fecha_ingresada < $fecha_limite ) {
wc_add_notice( 'La fecha seleccionada debe ser con al menos 7 dÃas de anticipación.', 'error' );
}
}
}
// 3. Guardar la fecha en la información del pedido
add_action( 'woocommerce_checkout_update_order_meta', 'rosado_guardar_fecha_order_meta' );
function rosado_guardar_fecha_order_meta( $order_id ) {
if ( ! empty( $_POST['fecha_entrega'] ) ) {
update_post_meta( $order_id, 'Fecha de Entrega', sanitize_text_field( $_POST['fecha_entrega'] ) );
}
}
// 4. Mostrar la fecha en el panel de administración de WooCommerce
add_action( 'woocommerce_admin_order_data_after_billing_address', 'rosado_mostrar_fecha_admin_order', 10, 1 );
function rosado_mostrar_fecha_admin_order( $order ){
$fecha_entrega = get_post_meta( $order->get_id(), 'Fecha de Entrega', true );
if ( $fecha_entrega ) {
echo '
Fecha de Entrega Seleccionada: ' . esc_html( $fecha_entrega ) . '