Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Crear un pedido de WooCommerce desde un formulario

En este artículo veremos como crear un nuevo pedido de WooCommerce desde un formulario de Contact Forms 7, veremos como hacerlo a través de código.

 

Resultado Final

Al final queremos obtener algo similar a lo que se muestra en la siguiente imagen:

Crear pedido de WooCommerce usando un formulario

 

Código para crear un pedido desde un formulario CF7

Puedes usar el siguiente código, haciendo variaciones a las variables de $form_id (identificador del formulario) y $product_id (identificador del producto).

Ten en cuenta que estamos asumiendo que tienes configurado WooCommerce para aceptar pedidos de usuarios que no están registrados.

add_filter( 'wpcf7_before_send_mail', 'create_order_from_form', 10, 3 );

function create_order_from_form( $contact_form, $abort, $submission ) {
        $form_id    = 1111;
        $product_id = 2222;
        $name       = $submission->get_posted_data( 'your-name' );
        $email      = $submission->get_posted_data( 'your-email' );

        if ( $contact_form->id() === $form_id ) {
                if ( ! wc_customer_bought_product( $email, '', $product_id ) ) {
                        $order = wc_create_order();
                        $order->add_product( wc_get_product( $product_id ), 1 );
                        $order->set_address( [ 'first_name' => $name, 'email' => $email ] );
                        $order->calculate_totals();
                        $order->update_status( 'completed' );
                }
        }

        return $contact_form;
}
Puedes agregar el código como parte del archivo functions.php de tu tema hijo, o usando algún plugin de Snippets.

 

  • Utilizamos el hook wpcf7_before_send_mail de Contact Forms 7 que se ejecuta antes de enviar el correo
  • Usamos la función create_order_from_form con tres parámetros
  • Dentro de la función definimos el id del formulario y el id del producto
  • Los datos del usuario los obtenemos del formulario a través del objeto $submission
  • Validamos si estamos en el formulario correcto
  • Comprobamos si el usuario no ha comprado antes ese producto, con la función wc_customer_bought_product
  • Creamos la orden con wc_create_order
  • Agregamos el producto, la dirección, calculamos los totales y establecemos que la orden esta completa
  • Finalmente devolvemos el objeto $contact_form retornando el control al plugin CF7

 

Conclusión

Como has podido comprobar, podemos crear un nuevo pedido de WooCommerce a través de programación, en este caso nos hemos ayudado del plugin Contact Forms 7 para obtener datos del usuario al que pertenecerá la orden, pero lo mismo puede aplicarse para cualquier otro tipo de plugin de formulario.

 

La entrada Crear un pedido de WooCommerce desde un formulario es un artículo reciente del sitio DecodeCMS.

Enregistrer un commentaire

0 Commentaires