crop unrecognizable woman working on laptop

Cómo Crear Órdenes en WooCommerce de Manera Programática: Una Guía Paso a Paso

Descubre cómo crear órdenes en WooCommerce de manera programática con nuestro tutorial detallado. Desde la creación básica hasta la personalización avanzada, te guiamos paso a paso para integrar y automatizar tus procesos en WooCommerce. ¡Optimiza tu tienda hoy!

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?

Anuncio - Hosting Web de SiteGround - Diseñado para una fácil administración web. Haz clic para saber más.

Anuncio - Hosting Web de SiteGround - Diseñado para una fácil administración web. Haz clic para saber más.

¿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!