• 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 productos por programación en WooCommerce

Crear productos por programación en WooCommerce

[ 28 septiembre 2023 ] [ Autor: Jhon Marreros Guzmán ][ Plugins - Avanzado] [ ]

funcionalidad woocommerce

Suscríbete a DecodeCMS:  

En este artículo veremos que clases y métodos de WooCommerce usar para crear productos a través de código, veremos como hacerlo con productos simples y productos variables.

 

Generalidades

En algunos proyectos es posible que requieras crear productos de WooCommerce dinámicamente ya sea por ejemplo de datos obtenidos de una API o de un archivo CSV. En este artículo veremos las clases y métodos base para crear productos simples y productos variables a través de código.

Estas clases y métodos están disponibles desde la versión 3.0 de WooCommerce.

Al final obtendremos dos productos creados por programación, tal como vemos en la imagen:

Creación de productos por programación

 

Creación de producto simple a través de código

El siguiente código muestra la creación de un producto simple haciendo uso de la clase WC_Product_Simple() y algunos de los métodos más importantes para completar la información del producto.

<?php

try {
	$product = new WC_Product_Simple();

	// General info
	$product->set_name( 'Producto de ejemplo' );
	$product->set_sku( '12345' );
	$product->set_description( 'Descripción del producto' );
	$product->set_short_description( 'Descripción corta del producto' );

	// Visibility info
	$product->set_status( 'publish' );  // can be publish, pending, draft, etc
	$product->set_catalog_visibility( 'visible' ); // add the product visibility status

	// Stock info
	$product->set_manage_stock( true );
	$product->set_stock_quantity( 1000 );
	$product->set_stock_status();

	// Price info
	$product->set_price( 100 );
	$product->set_regular_price( 100 );
	$product->set_sale_price( 90 );

	// Taxonomy info
	$product->set_category_ids( [ 280 ] ); // array of category ids, 15 is cat id
	$product->set_tag_ids( [ 302, 304 ] ); // array of tag ids

	// Image info
	$product->set_image_id( 57 ); // image id from media library

	// Dimension info
	$product->set_height( 10 );
	$product->set_length( 10 );
	$product->set_width( 10 );
	$product->set_weight( 1.2 );

	// Attributes info
	$brand = new WC_Product_Attribute();
	$brand->set_name( 'Marca' );
	$brand->set_options( [ 'Lacoste', 'Tommy Hilfiger' ] );
	$brand->set_position( 1 );
	$brand->set_variation( false );
	$brand->set_visible( true );

	$product->set_attributes( [ $brand ] );

	// Save product
	$product->save();

} catch ( WC_Data_Exception $e ) {
	error_log( print_r( $e->getMessage(), true ) );
}

Existen métodos adicionales que podríamos usar como:

  • set_gallery_image_ids(): Para establecer la galería de imágenes del producto
  • set_featured(): Para establecer si el producto es un producto destacado
  • set_upsell_ids() y set_cross_sell_ids(): Para establecer productos relacionados
  • update_meta_data(): Para establecer cualquier metadato adicional del producto

Para ver todos los métodos disponibles en esta clase, puedes revisar la documentación oficial de WooCommerce para la clase WC_Product_Simple()

 

Creación de producto variable a través de código

La creación de un producto variable es muy similar a la creación de un producto simple, sin embargo en este caso una vez guardado el producto necesitaremos establecer sus variaciones, también lo realizamos a través de clases.

Cuando construimos los atributos con la clase WC_Product_Attribute() establecemos que serán usados para las variaciones con el método set_variation( true )
<?php

try {
	$product = new WC_Product_Variable();

	// General info
	$product->set_name( 'Producto de ejemplo variable' );
	$product->set_sku( '123456' );
	$product->set_description( 'Descripción del producto variable' );
	$product->set_short_description( 'Descripción corta del producto variable' );

	// Visibility info
	$product->set_status( 'publish' );  // can be publish, pending, draft, etc
	$product->set_catalog_visibility( 'visible' ); // add the product visibility status

	// Taxonomy info
	$product->set_category_ids( [ 281 ] ); // array of category ids, 15 is cat id
	$product->set_tag_ids( [ 302 ] ); // array of tag ids

	// Image info
	$product->set_image_id( 55 ); // image id from media library

	// Attributes info
	$color = new WC_Product_Attribute();
	$color->set_name( 'Color' );
	$color->set_options( [ 'Azul', 'Blanco', 'Rojo' ] );
	$color->set_position( 2 );
	$color->set_variation( true );
	$color->set_visible( true );

	$logo = new WC_Product_Attribute();
	$logo->set_name( 'Logo' );
	$logo->set_options( [ 'Si', 'No' ] );
	$logo->set_position( 1 );
	$logo->set_variation( true );
	$logo->set_visible( true );

	$product->set_attributes( [ $color , $logo] );

	// Save product
	$product->save();

	// Variations
	$variation = new WC_Product_Variation();
	$variation->set_parent_id( $product->get_id() );
	$variation->set_attributes( [ 'color' => 'Azul', 'logo' => 'Si' ] );
	$variation->set_regular_price( 111 );
	$variation->save();

	$variation = new WC_Product_Variation();
	$variation->set_parent_id( $product->get_id() );
	$variation->set_attributes( [ 'color' => 'Azul', 'logo' => 'No' ] );
	$variation->set_regular_price( 110 );
	$variation->save();

	$variation = new WC_Product_Variation();
	$variation->set_parent_id( $product->get_id() );
	$variation->set_attributes( [ 'color' => 'Blanco' ] );
	$variation->set_regular_price( 100 );
	$variation->save();

	$variation = new WC_Product_Variation();
	$variation->set_parent_id( $product->get_id() );
	$variation->set_attributes( [ 'color' => 'Rojo' ] );
	$variation->set_regular_price( 115 );
	$variation->save();

} catch ( WC_Data_Exception $e ) {
	error_log( print_r( $e->getMessage(), true ) );
}

Para la creación de las variaciones usamos la clase WC_Product_Variation(), a cada variación se puede establecer un precio, un stock, un SKU, etc.

Para ver todos los métodos disponibles de las variaciones, puedes revisar la documentación oficial de WooCommerce para la clase WC_Product_Variation()
Existen otras clases adicionales para otros tipos de productos menos usados como son: WC_Product_External() para productos externos y WC_Product_Grouped() para productos agrupados

 

Conclusión

Como has podido comprobar puedes crear productos para WooCommerce a través de programación, en este artículo hemos visto como crear productos simples y productos variables y hemos visto los principales métodos y clases para hacerlo.

 

¿Me ayudas a llegar a más gente?

Twittear Compartir LinkedIn WhatsApp

Artículos Relacionados

  • Comprar productos de la misma categoría en WooCommerceComprar productos de la misma categoría en WooCommerce
  • URL para agregar varios productos al carrito de WooCommerceURL para agregar varios productos al carrito de WooCommerce
  • Sincronizar WooCommerce y ExcelSincronizar WooCommerce y Excel
  • Actualizar el stock de productos usando la API de WooCommerceActualizar el stock de productos usando la API de WooCommerce
Valora este artículo : 1 barra2 barras3 barras4 barras5 barras (2 votos, promedio: 5,00 de 5)
Cargando...

Interacciones con los lectores

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

¿Qué son las claves de seguridad en WordPress y cómo cambiarlas?

Cancelar el envío de correos de WordPress sin plugins

Leer datos desde una API externa en WordPress

Agregar login y logout en un menú de WordPress

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