Maison >développement back-end >tutoriel php >Comment créer des variantes de produits WooCommerce avec de nouveaux attributs par programme ?

Comment créer des variantes de produits WooCommerce avec de nouveaux attributs par programme ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-18 11:30:02348parcourir

How to Create WooCommerce Product Variations with New Attributes Programmatically?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn