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
Libérer: 2024-11-18 11:30:02
original
364 Les gens l'ont consulté

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 );

}
Copier après la connexion

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
}
Copier après la connexion

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,
);
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal