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:
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).
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;
}
- 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.
0 Commentaires