Créer des variantes de produits WooCommerce avec de nouveaux attributs par programme
Lorsque vous travaillez avec des produits variables dans WooCommerce 3, vous pouvez rencontrer le besoin de créer des variantes par programme . Ceci peut être réalisé tout en créant de nouvelles valeurs d'attribut et en les définissant dans le produit variable parent.
Création de variantes de produit
Pour créer une variation pour un produit variable, nous peut utiliser la fonction personnalisée suivante :
/** * Create a product variation for a defined variable product ID. * * @since 3.0.0 * @param int $product_id | Post ID of the product parent variable product. * @param array $variation_data | The data to insert in the product. */ function create_product_variation( $product_id, $variation_data ){ // Get the Variable product object (parent) $product = wc_get_product($product_id); $variation_post = array( 'post_title' => $product->get_name(), 'post_name' => 'product-'.$product_id.'-variation', 'post_status' => 'publish', 'post_parent' => $product_id, 'post_type' => 'product_variation', 'guid' => $product->get_permalink() ); // Creating the product variation $variation_id = wp_insert_post( $variation_post ); // Get an instance of the WC_Product_Variation object $variation = new WC_Product_Variation( $variation_id ); }
Gestion des valeurs d'attribut et création de taxonomie
Au sein de la fonction, nous améliorons la fonctionnalité en gérant la vérification et la création de valeurs d'attribut :
// Iterating through the variations attributes foreach ($variation_data['attributes'] as $attribute => $term_name ) { $taxonomy = 'pa_'.$attribute; // The attribute taxonomy // If taxonomy doesn't exists we create it (Thanks to Carl F. Corneil) if( ! taxonomy_exists( $taxonomy ) ){ register_taxonomy( $taxonomy, 'product_variation', array( 'hierarchical' => false, 'label' => ucfirst( $attribute ), 'query_var' => true, 'rewrite' => array( 'slug' => sanitize_title($attribute) ), // The base slug ), ); } // Check if the Term name exist and if not we create it. if( ! term_exists( $term_name, $taxonomy ) ) wp_insert_term( $term_name, $taxonomy ); // Create the term }
Utilisation
Pour utiliser cette fonction, fournissez-lui l'ID de produit variable et le tableau de données suivant :
// The variation data $variation_data = array( 'attributes' => array( 'size' => 'M', 'color' => 'Green', ), 'sku' => '', 'regular_price' => '22.00', 'sale_price' => '', 'stock_qty' => 10, );
Conclusion
Grâce à cette fonction, vous pouvez désormais créer par programme des variantes de produit avec de nouvelles valeurs d'attribut, en les configurant de manière transparente dans la variable parent product.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!