Maison > Article > développement back-end > Comment créer une variante de produit WooCommerce avec de nouvelles valeurs d'attribut par programme ?
Comment créer une variante de produit WooCommerce avec de nouvelles valeurs d'attribut par programmation
Introduction
WooCommerce vous permet de créer des produits variables avec différents attributs et valeurs. Pour ajouter de nouvelles variantes par programmation, vous devez prendre en compte les éléments suivants :
Fonction personnalisée pour créer une variation de produit
La fonction personnalisée suivante créera une variation de produit pour une variable donnée ID produit :
function create_product_variation( $product_id, $variation_data ){ // Get Variable product object (parent) $product = wc_get_product($product_id); // Create variation post data $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() ); // Insert variation post and create WC_Product_Variation object $variation_id = wp_insert_post( $variation_post ); $variation = new WC_Product_Variation( $variation_id ); // Iterate through variation attributes foreach ($variation_data['attributes'] as $attribute => $term_name ) { $taxonomy = 'pa_'.$attribute; // Attribute taxonomy // Create taxonomy if doesn't exist if( ! taxonomy_exists( $taxonomy ) ) register_taxonomy( $taxonomy, 'product_variation', array( 'hierarchical' => false, 'label' => ucfirst( $attribute ), 'query_var' => true, 'rewrite' => array( 'slug' => sanitize_title($attribute) ), ), ); // Check if term exists and create if not if( ! term_exists( $term_name, $taxonomy ) ) wp_insert_term( $term_name, $taxonomy ); // Create term $term_slug = get_term_by('name', $term_name, $taxonomy )->slug; // Get term slug // Check if post term exists and set if not $post_term_names = wp_get_post_terms( $product_id, $taxonomy, array('fields' => 'names') ); if( ! in_array( $term_name, $post_term_names ) ) wp_set_post_terms( $product_id, $term_name, $taxonomy, true ); // Set attribute data in variation update_post_meta( $variation_id, 'attribute_'.$taxonomy, $term_slug ); } // Set other variation data if( ! empty( $variation_data['sku'] ) ) $variation->set_sku( $variation_data['sku'] ); if( empty( $variation_data['sale_price'] ) ){ $variation->set_price( $variation_data['regular_price'] ); } else { $variation->set_price( $variation_data['sale_price'] ); $variation->set_sale_price( $variation_data['sale_price'] ); } $variation->set_regular_price( $variation_data['regular_price'] ); if( ! empty($variation_data['stock_qty']) ){ $variation->set_stock_quantity( $variation_data['stock_qty'] ); $variation->set_manage_stock(true); $variation->set_stock_status(''); } else { $variation->set_manage_stock(false); } $variation->set_weight(''); // Reset weight $variation->save(); }
Exemple d'utilisation
Pour un produit variable avec les attributs « Taille » et « Couleur », vous pouvez créer une variation comme suit :
$parent_id = 746; // Variable product ID $variation_data = array( 'attributes' => array( 'size' => 'M', 'color' => 'Green', ), 'sku' => '', 'regular_price' => '22.00', 'sale_price' => '', 'stock_qty' => 10, ); create_product_variation( $parent_id, $variation_data );
Cela ajoutera une variation avec les attributs et les données spécifiés au produit variable.
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!