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.
Al final obtendremos dos productos creados por programación, tal como vemos en la imagen:
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
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.
<?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.
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.
¿Aún con dudas?, en el siguiente video se detallan los puntos anteriores:
La entrada Crear productos por programación en WooCommerce es un artículo reciente del sitio DecodeCMS.
0 Commentaires