Bienvenido a este tutorial, donde te guiaré paso a paso en el proceso de crear órdenes de WooCommerce de forma programática. Esto puede ser útil cuando necesitas integrar WooCommerce con sistemas externos o cuando deseas automatizar ciertos procesos internos.
1. Preparación
Antes de comenzar, asegúrate de tener acceso al archivo functions.php
de tu tema o mejor aún, a un plugin personalizado. Esto es donde colocaremos nuestro código.
2. Creando una Orden Básica
Para crear una orden, necesitamos instanciar un objeto de la clase WC_Order
. Aquí hay un ejemplo básico:
$order = wc_create_order();
echo 'Se ha creado la orden con el ID: ' . $order->get_id();
Sin embargo, esta orden es muy básica. Veamos cómo añadir detalles a esta orden.
3. Añadir Productos a la Orden
Para añadir productos, utilizamos el método add_product()
. Aquí hay un ejemplo de cómo añadir un producto a nuestra orden:
$product = wc_get_product(123); // Donde 123 es el ID del producto
$quantity = 1;
$order->add_product($product, $quantity);
$order->calculate_totals();
4. Establecer Direcciones
Para establecer la dirección de envío y facturación, utilizamos los métodos set_billing_address()
y set_shipping_address()
:
$address = array(
'first_name' => 'Juan',
'last_name' => 'Pérez',
'company' => 'Mi Empresa',
'email' => 'juan@example.com',
'phone' => '123-456-7890',
'address_1' => 'Calle 123',
'address_2' => '',
'city' => 'Madrid',
'state' => 'M',
'postcode' => '28001',
'country' => 'ES'
);
$order->set_billing_address($address);
$order->set_shipping_address($address);
5. Añadir Notas a la Orden
Las notas de la orden son útiles para guardar información adicional. Aquí te muestro cómo agregar una:
$note = "Esta es una nota de ejemplo para la orden.";
$order->add_order_note($note);
6. Establecer Métodos de Envío
Si quieres especificar un método de envío, puedes hacerlo de la siguiente manera:
$shipping_method = new WC_Shipping_Rate('id', 'Envío Estándar', 5.00, array(), 'flat_rate');
$order->add_shipping($shipping_method);
Asegúrate de ajustar los valores según tu configuración y tus necesidades.
7. Añadir Cupones
Si el cliente ha utilizado un cupón, podemos añadirlo a nuestra orden programáticamente:
$coupon_code = 'MI_CUPON';
$order->apply_coupon($coupon_code);
8. Establecer Métodos de Pago y Pagar la Orden
Primero, establezcamos el método de pago:
$order->set_payment_method('bacs'); // 'bacs' es para transferencia bancaria. Ajusta según tus métodos de pago.
Si deseas marcar la orden como pagada:
$order->payment_complete();
9. Guardar y Finalizar
Es crucial recordar guardar la orden después de hacer todas las modificaciones:
$order->save();
Ejemplo Completo
Aquí tienes un ejemplo completo de cómo crear una orden en WooCommerce de manera programática, con verificaciones y comentarios adecuados para asegurarte de que todo funcione correctamente:
<?php
// Verificamos si WooCommerce está activo
if (in_array('woocommerce/woocommerce.php', apply_filters('active_plugins', get_option('active_plugins')))) {
// Creamos una nueva orden
$order = wc_create_order();
// Añadimos un producto a la orden (por ejemplo, el producto con ID 123)
$product = wc_get_product(123);
$quantity = 1;
$order->add_product($product, $quantity);
// Definimos una dirección para facturación y envío
$address = array(
'first_name' => 'Juan',
'last_name' => 'Pérez',
'company' => 'Mi Empresa',
'email' => 'juan@example.com',
'phone' => '123-456-7890',
'address_1' => 'Calle 123',
'address_2' => '',
'city' => 'Madrid',
'state' => 'M',
'postcode' => '28001',
'country' => 'ES'
);
$order->set_billing_address($address);
$order->set_shipping_address($address);
// Añadimos una nota a la orden
$note = "Esta es una nota de ejemplo para la orden.";
$order->add_order_note($note);
// Establecemos un método de envío (por ejemplo, envío estándar por 5.00)
$shipping_method = new WC_Shipping_Rate('id', 'Envío Estándar', 5.00, array(), 'flat_rate');
$order->add_shipping($shipping_method);
// Aplicamos un cupón si es necesario
$coupon_code = 'MI_CUPON';
$order->apply_coupon($coupon_code);
// Establecemos el método de pago y marcamos la orden como pagada
$order->set_payment_method('bacs'); // 'bacs' es para transferencia bancaria. Ajusta según tus métodos de pago.
$order->payment_complete();
// Guardamos todos los cambios hechos en la orden
$order->save();
// Imprimimos el ID de la orden para referencia
echo 'Se ha creado la orden con el ID: ' . $order->get_id();
} else {
echo 'WooCommerce no está activo. Asegúrate de activarlo para proceder.';
}
?>
Este código verifica primero si WooCommerce está activo. Si lo está, crea una orden, añade un producto, establece las direcciones, añade una nota, establece el método de envío, aplica un cupón, establece el método de pago, y finalmente guarda la orden. Si WooCommerce no está activo, muestra un mensaje de error.
Espero que este ejemplo te sea útil y te ayude en tu desarrollo con WooCommerce. ¡Déjame saber si hay algo más en lo que pueda ayudarte!
Suscripción al Newsletter
Si estás interesado en aprender más sobre WordPress, no olvides suscribirte a nuestro blog para recibir las últimas noticias y consejos sobre WordPress, alojamiento web.
¿Necesitas un Hosting para tu Web?
¿Necesitas ayuda con un Proyecto Web o un Plugin a Medida?
Si ¿Necesitas ayuda con algún proyecto web? No dudes en contactarme desarrollo soluciones completas y personalizadas con WordPress y PHP, con herramientas y procesos modernos, utilizando HTML, CSS, SCSS, PHP, JavaScript, Bootstrap y más… Si ¿Estás listo? ¡Envíame un mensaje y hablemos de tu proyecto web!