So erstellen Sie programmgesteuert eine WooCommerce-Produktvariante mit neuen Attributwerten
Einführung
WooCommerce ermöglicht Ihnen die Erstellung variabler Produkte mit unterschiedlichen Attributen und Werten. Um neue Variationen programmgesteuert hinzuzufügen, müssen Sie Folgendes berücksichtigen:
Benutzerdefinierte Funktion zum Erstellen einer Produktvariation
Die folgende benutzerdefinierte Funktion erstellt eine Produktvariation für eine bestimmte Variable Produkt-ID:
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(); }
Beispielverwendung
Für ein variables Produkt mit den Attributen „Größe“ und „Farbe“ können Sie eine Variation wie folgt erstellen:
$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 );
Dadurch wird eine Variante mit den angegebenen Attributen und Daten zum variablen Produkt hinzugefügt.
Das obige ist der detaillierte Inhalt vonWie erstelle ich programmgesteuert eine WooCommerce-Produktvariante mit neuen Attributwerten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!