Añadir productos en WooCommerce con WC_Product(): Guía técnica

Introducción a WooCommerce y WC_Product()

WooCommerce es una plataforma de comercio electrónico muy popular que permite a los usuarios crear y administrar una tienda en línea de manera sencilla y eficiente. Una de las características clave de WooCommerce es su capacidad para manejar y gestionar productos de forma efectiva. En este artículo, vamos a explorar el desarrollo de productos en WooCommerce utilizando la clase WC_Product(), una clase principal utilizada para crear y personalizar productos en la plataforma.

person doing online shopping
Photo by MART PRODUCTION on Pexels.com

Creando un producto básico con WC_Product()

Para crear un producto básico en WooCommerce utilizando la clase WC_Product(), podemos seguir el siguiente código en PHP:

$product = new WC_Product();
$product->set_name('Camiseta');
$product->set_price(20);
$product->set_stock_quantity(50);
$product->save();

En este ejemplo, creamos un producto básico llamado “Camiseta” con un precio de $20 y un stock inicial de 50 unidades. Luego, guardamos el producto utilizando el método save().

Personalizando los atributos del producto

La clase WC_Product() también nos permite personalizar los atributos de un producto. Por ejemplo, podemos establecer el tamaño y el color de una camiseta de la siguiente manera:

$product->set_attributes(array('size' => 'S', 'color' => 'blue'));
$product->save();

En este caso, establecemos los atributos ‘size’ y ‘color’ del producto como ‘S’ y ‘blue’, respectivamente. Luego, guardamos los cambios utilizando el método save().

Consultando y actualizando información del producto

Una vez que hemos creado un producto, también podemos consultar y actualizar su información utilizando métodos específicos. Por ejemplo, para obtener el ID, el nombre, el precio y la cantidad de stock de un producto, podemos utilizar los siguientes métodos:

$product_id = $product->get_id();
$product_name = $product->get_name();
$product_price = $product->get_price();
$product_stock = $product->get_stock_quantity();

Estos métodos nos permiten acceder y modificar la información del producto según sea necesario.

Asignando categorías y etiquetas al producto

En WooCommerce, es posible asignar categorías y etiquetas a un producto para organizar y clasificarlos de manera más efectiva. Utilizando la clase WC_Product(), podemos asignar categorías y etiquetas a un producto de la siguiente manera:

$product->set_category_ids(array(8, 12));
$product->set_tag_ids(array(5, 9));
$product->save();

En este ejemplo, asignamos las categorías con los IDs 8 y 12, y las etiquetas con los IDs 5 y 9 al producto. Luego, guardamos los cambios utilizando el método save().

Añadiendo imágenes al producto

Una parte importante de la presentación de un producto en línea es la inclusión de imágenes. En WooCommerce, podemos agregar imágenes a un producto utilizando la clase WC_Product(). Por ejemplo:

$product->set_image_id(15);
$product->set_gallery_image_ids(array(16, 17));
$product->save();

En este caso, establecemos el ID de la imagen principal con el valor 15, y los IDs de las imágenes de la galería con los valores 16 y 17. Después de agregar las imágenes, guardamos los cambios utilizando el método save().

Configurando opciones de envío y tasas

Además de la información básica del producto, también podemos configurar opciones de envío y tasas utilizando la clase WC_Product(). Por ejemplo, podemos asignar una clase de envío específica y una clase de impuesto reducido de la siguiente manera:

$product->set_shipping_class_id(3);
$product->set_tax_class('reduced-rate');
$product->save();

En este ejemplo, asignamos la clase de envío con el ID 3 y la clase de impuesto ‘reduced-rate’ al producto. Luego, guardamos los cambios utilizando el método save().

Vinculando productos relacionados

En ocasiones, puede ser útil vincular productos relacionados entre sí para promover compras adicionales. Utilizando la clase WC_Product(), podemos establecer productos relacionados y productos complementarios de la siguiente manera:

$product->set_upsells(array(22, 23));
$product->set_cross_sells(array(30, 31));
$product->save();

En este caso, establecemos los productos relacionados con los IDs 22 y 23, y los productos complementarios con los IDs 30 y 31. Después de establecer las relaciones, guardamos los cambios utilizando el método save().

Gestionando precios y descuentos

La clase WC_Product() también nos permite gestionar los precios y descuentos de un producto en WooCommerce. Por ejemplo, podemos establecer un precio regular, un precio de venta y fechas de inicio y finalización de la oferta de la siguiente manera:

$product->set_regular_price(25);
$product->set_sale_price(20);
$product->set_date_on_sale_from('2022-01-01');
$product->set_date_on_sale_to('2022-01-31');
$product->save();

En este ejemplo, establecemos un precio regular de $25, un precio de venta de $20 y fechas de inicio y finalización de la oferta (del 1 de enero de 2022 al 31 de enero de 2022). Luego, guardamos los cambios utilizando el método save().

Eliminando un producto

Si necesitamos eliminar un producto de WooCommerce utilizando la clase WC_Product(), podemos hacerlo utilizando el siguiente código:

$product->delete(true);

En este caso, eliminamos el producto y todos sus datos relacionados, como imágenes, atributos y relaciones. El parámetro ‘true’ indica que se deben eliminar todos los datos asociados al producto.

Ejemplo de Codigo Completo

/**
 * Crea y gestiona un producto en WooCommerce.
 *
 * Esta función utiliza la clase WC_Product para crear un nuevo producto en WooCommerce,
 * establecer sus propiedades, y finalmente eliminarlo. Se engancha a WordPress para
 * ejecutarse en un momento específico.
 *
 * @return void
 */
function crear_y_gestionar_producto_wc() {
    // Crear un nuevo producto
    $product = new WC_Product();
    $product->set_name('Camiseta'); // Establecer el nombre del producto
    $product->set_price(20); // Establecer el precio del producto
    $product->set_regular_price(25); // Establecer el precio regular
    $product->set_sale_price(20); // Establecer el precio de oferta
    $product->set_date_on_sale_from('2022-01-01'); // Fecha de inicio de la oferta
    $product->set_date_on_sale_to('2022-01-31'); // Fecha de fin de la oferta
    $product->set_stock_quantity(50); // Cantidad de stock
    $product->set_manage_stock(true); // Habilitar gestión de stock
    $product->set_attributes(array('size' => 'S', 'color' => 'blue')); // Establecer atributos
    $product->set_category_ids(array(8, 12)); // Asignar categorías por ID
    $product->set_tag_ids(array(5, 9)); // Asignar etiquetas por ID
    $product->set_image_id(15); // Asignar ID de la imagen principal
    $product->set_gallery_image_ids(array(16, 17)); // Asignar IDs de imágenes de la galería
    $product->set_shipping_class_id(3); // Asignar clase de envío por ID
    $product->set_tax_class('reduced-rate'); // Asignar clase de impuesto
    $product->set_upsells(array(22, 23)); // Establecer productos relacionados por ID
    $product->set_cross_sells(array(30, 31)); // Establecer productos complementarios por ID
    $product->save(); // Guardar el producto
    // Consultar información del producto
    $product_id = $product->get_id(); // Obtener el ID del producto
    $product_name = $product->get_name(); // Obtener el nombre del producto
    $product_price = $product->get_price(); // Obtener el precio del producto
    $product_stock = $product->get_stock_quantity(); // Obtener la cantidad de stock
    // Actualizar información del producto (ejemplo: cambiar el precio)
    $product->set_price(22); // Cambiar el precio del producto
    $product->save(); // Guardar los cambios
    // Eliminar un producto
    // $product->delete(true); // Descomentar para eliminar el producto y sus datos relacionados
}
// Hook para integrar la función con WordPress
// Este ejemplo utiliza 'init', pero puedes cambiarlo según tus necesidades
add_action('init', 'crear_y_gestionar_producto_wc');

En este código:

  1. Función crear_y_gestionar_producto_wc: Esta función es responsable de crear y gestionar un producto en WooCommerce. Utiliza varios métodos de la clase WC_Product para establecer las propiedades del producto, como nombre, precio, stock, atributos, categorías, imágenes, y más.
  2. Hook add_action: Integra la función con WordPress. En este caso, se utiliza el hook init, que se dispara después de que WordPress haya terminado de cargar pero antes de que cualquier cabecera sea enviada. Puedes cambiar este hook por otro que se ajuste mejor a tus necesidades.
  3. Comentarios en formato PHPDoc: Cada línea de código tiene un comentario explicativo para entender mejor lo que hace. Los comentarios en PHPDoc están en español y proporcionan una descripción clara de la función y sus componentes.

Ten en cuenta que este código asume que WooCommerce está instalado y activo en tu sitio de WordPress. Además, los IDs de categorías, etiquetas, imágenes y clases de envío deben ser válidos en tu instalación de WooCommerce. También, la línea para eliminar el producto está comentada para evitar eliminaciones accidentales; puedes descomentarla si necesitas utilizar esa funcionalidad.

Conclusiones

En este artículo, hemos explorado el desarrollo de productos en WooCommerce utilizando la clase WC_Product(). Hemos aprendido cómo crear un producto básico, personalizar sus atributos, consultar y actualizar su información, asignar categorías y etiquetas, agregar imágenes, configurar opciones de envío y tasas, vincular productos relacionados, gestionar precios y descuentos, y eliminar productos. Este conocimiento nos proporciona una base sólida para desarrollar y administrar productos en WooCommerce de manera efectiva. En la próxima etapa de desarrollo, podemos profundizar en conceptos más avanzados y explorar aún más las capacidades de la clase WC_Product().

Referencias y recursos adicionales

¿Necesitas ayuda con un proyecto web?

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!