Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

Crear productos por programación en WooCommerce

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.

 

¿Aún con dudas?, en el siguiente video se detallan los puntos anteriores:

Suscríbete a DecodeCMS:  

 

La entrada Crear productos por programación en WooCommerce es un artículo reciente del sitio DecodeCMS.

Enregistrer un commentaire

0 Commentaires