Entonces, he construido mi Sistema propio de gestión de eventos para WooCommerce.
Mi objetivo era integrar un formulario en la página de registro de eventos, y luego crear programáticamente un pedido gratuito de WooCommerce para ese cliente, para que pueda rastrear la cantidad de asistentes (órdenes) y hacer un seguimiento con las automatizaciones de correo electrónico (clientes).
Ya puede ver el sistema en acción en el «Cómo contribuir a WooCommerce Core«Página del evento: Puede ver claramente una entrada de correo electrónico y un botón «Registrarse ahora» dentro de la sección «Está invitado». Esa es la forma, en realidad un Complemento de formularios fluidos Formulario de contacto.
Y luego hay un fragmento simple que se conecta a la sumisión de forma fluida, y condicionalmente genera una orden de WooCommerce.
En esta publicación, aprenderá sobre una forma rápida de crear un formulario de formularios fluidos en su sitio de WordPress, sobre el «FluentForm/Validate_Input_Item_Input_Email«Hook, y finalmente sobre el wc_create_order () Función de WooCommerce que, por supuesto, nos permite generar un pedido automáticamente. ¡Disfrutar!
Paso 1: forma fluida
Entonces, he creado un formulario gracias a formularios fluidos con solo 1 campo y un botón de envío. El campo es un campo de «correo electrónico», donde los usuarios ingresarán su dirección de correo electrónico.
Aquí hay una captura de pantalla rápida de la vista previa del formulario:
Ahora puedo usar el útil cuadro de shortcode o Gutenberg para incrustar el formulario en la página del evento:
Paso 2: Objetivo de código
Ahora, necesito «interceptar«La dirección de correo electrónico publicada y devuelve un error si el usuario ya está registrado o crea el pedido de WooCommerce.
Al observar la documentación detallada de formularios fluidos, encontré este gancho específico: «FluentForm/Validate_Input_Item_Input_Email«(enlace a formularios fluidos relevantes DOC). Básicamente, esto hace el truco, ya que me da acceso al valor de correo electrónico publicado, y puedo devolver un mensaje de error o ejecutar algún código.
Lo que necesito hacer desde un punto de vista de WooCommerce, una vez que tengo acceso al correo electrónico, es verificar si el cliente tiene un pedido anterior (por lo que está registrado), y si no crea el pedido. ¡Muy fácil!
Paso 3: fragmento de PHP para crear una orden de wooCommerce en una presentación de formulario fluido
Requisitos:
- ID de formulario fluido (8 en mi caso)
- WooCommerce Hidden, Simple, ID de producto gratuito (240779 en mi caso) con Name = «Event XYZ»
/** * @snippet Create Woo Order From Fluent Forms * @tutorial Get CustomizeWoo.com FREE * @author Rodolfo Melogli, Business Bloomer * @compatible WooCommerce 8 * @community https://businessbloomer.com/club/ */ add_filter( 'fluentform/validate_input_item_input_email', 'bbloomer_maybe_register_attendee', 9999, 5 ); function bbloomer_maybe_register_attendee( $errorMessage, $field, $formData, $fields, $form ) { if ( $form->id != 8 ) return $errorMessage; // FORM TARGET $email = $formData['email']; // GET EMAIL VALUE if ( wc_customer_bought_product( $email, '', 240779 ) ) { $errorMessage = "You are already registered!"; } else { $order = wc_create_order( [ 'created_via' => 'fluent' ] ); $order->add_product( get_product( '240779' ), 1 ); $order->set_address( [ 'email' => $email ], 'billing' ); $order->calculate_totals(); $order->update_status( 'completed' ); } return $errorMessage; }
Como puede ver, si hay un pedido existente, devolvemos un mensaje de error; de lo contrario usamos el wc_create_order La función de WooCommerce generar programáticamente un pedido con ID de producto 240779 y la cantidad 1, con la dirección de correo electrónico de facturación correcta y con el estado completado.
¡Eso es todo!