• Saltar a la navegación principal
  • Saltar al contenido principal
  • Saltar a la barra lateral principal

DecodeCMS

Tu WordPress a otro Nivel ...

  • Acerca de
  • Contacto
  • Inicio
  • Tutoriales
    • Themes
    • Plugins
    • Core
    • Recursos
  • Cursos
  • Acceder
    • Mis cursos
    • Mi Cuenta
    • Acceder
Inicio / Tutoriales / Plugins / Crear un pedido de WooCommerce desde un formulario

Crear un pedido de WooCommerce desde un formulario

[ 26 marzo 2024 ] [ Autor: Jhon Marreros Guzmán ][ Plugins - Intermedio] [ ]

funcionalidad woocommerce

Suscríbete a DecodeCMS:  

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.

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • Limitar la búsqueda de WordPress a productos de WooCommerceLimitar la búsqueda de WordPress a productos de WooCommerce
  • Mostrar un mensaje en la primera compra en WooCommerceMostrar un mensaje en la primera compra en WooCommerce
  • Registrar usuarios sólo para la compra de ciertos productos en WooCommerceRegistrar usuarios sólo para la compra de ciertos productos en WooCommerce
  • Categoría padre en las clases del body de un producto de WooCommerceCategoría padre en las clases del body de un producto de WooCommerce
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (1 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

Comentarios

  1. mauricio

    27 mayo, 2024

    y en este caso si necesito que se realice un pago antes de enviar el formulario que codigo deberia usar?

    • Jhon Marreros Guzmán

      1 junio, 2024

      Hola, el problema con lo que planteas es que no tendrás los datos disponibles para crear el pedido, sino necesitas los datos previos en todo caso entiendo que tendrías un botón previo para crear el pedido y luego que aparezca el formulario.

  2. Agustín

    1 junio, 2025

    Hola, no especifica que esta solución sea para varios productos, por ejemplo 10? ¿Cómo se edita function.php para que sea para varios productos? Gracias y saludos

    • Jhon Marreros Guzmán

      2 junio, 2025

      Puedes enviar el código a la IA para que lo complete para más productos.
      Una solución sería por ejemplo tener un bucle for para la función add_product

Para escribir código envolver con: <pre class="language-xxx"><code> </code></pre> ,reemplaza las xxx (php, css, html)

*

* Gravatar habilitado

Barra lateral principal

Curso Decodifica WordPress

Únete a DecodeCMS

Recibirás como regalo:

Guia práctica con video:
¿Quieres agregar código a WordPress? Revisa las diferentes opciones que tienes.Ver más

Omnisend
Alojamiento Wordpress

Niveles

Básico Intermedio Avanzado

Etiquetas

accesibilidad css dashboard editor error funcionalidad herramientas imagen js librería mejoras optimización seguridad SEO social woocommerce

Populares

Cómo añadir un Favicon en WordPress

Logout menú en Easy Digital Downloads

Botón scroll hacia arriba en WordPress sin plugins

Cómo usar la REST API de WordPress

© logo decode pie
Política de Privacidad | Política de devoluciones
Copyrigth 2026 Todos los derechos reservados