Opretning af WooCommerce Produktvarianter med PHP

Produktvarianter er et nyttigt værktøj, når du sælger produkter, der har forskellige størrelser, farver eller andre karakteristika. WooCommerce gør det muligt at oprette produktvarianter via et brugervenligt grænseflade. Men hvis du ønsker at oprette produktvarianter programmatisk, kan du gøre det med PHP.

Tilføjelse af Produktvarianter

For at tilføje en produktvariant skal du først oprette produktet. Når dette er gjort, kan du bruge denne kode til at tilføje en variant til produktet:

$variation_data = array(
    'attributes' => array(
        'size' => 'Medium',
        'color' => 'Black'
    ),
    'regular_price' => '10',
    'sale_price' => '5',
    'stock_qty' => 5
);
 
$variation_id = wc_create_product_variation( $product_id, $variation_data );

Hvis du har flere produktvarianter, kan du oprette dem alle på en gang ved hjælp af denne kode:

$variations = array(
    array(
        'attributes' => array(
            'size' => 'Small',
            'color' => 'Red'
        ),
        'regular_price' => '10',
        'sale_price' => '5',
        'stock_qty' => 5
    ),
    array(
        'attributes' => array(
            'size' => 'Medium',
            'color' => 'Black'
        ),
        'regular_price' => '10',
        'sale_price' => '5',
        'stock_qty' => 5
    ),
    array(
        'attributes' => array(
            'size' => 'Large',
            'color' => 'White'
        ),
        'regular_price' => '10',
        'sale_price' => '5',
        'stock_qty' => 5
    )
);
 
foreach( $variations as $variation ) {
    wc_create_product_variation( $product_id, $variation );
}

Oprettelse af Produktvariantfiltre, Hooks, Handlinger og Shortcodes

Du kan oprette filtre, hooks, handlinger og shortcodes til at håndtere produktvarianter. Disse kodeeksempler viser, hvordan du gør det:

Filtrer

Filtrer gør det muligt for dig at ændre WooCommerce produktvariantdata, når det bliver hentet. Her er et eksempel på, hvordan du bruger en filter til at ændre en produktvariants navn:

add_filter( 'woocommerce_available_variation', 'change_variation_name', 10, 3 );
 
function change_variation_name( $variation, $product, $variation_id ) {
    $variation['variation_name'] = 'New Variation Name';
    return $variation;
}

Hooks

Hooks gør det muligt for dig at udføre kode, når WooCommerce opretter, opdaterer eller sletter en produktvariant. Her er et eksempel på, hvordan du bruger en hook til at sende en mail, når en produktvariant oprettes:

add_action( 'woocommerce_new_product_variation', 'send_variation_email', 10, 3 );
 
function send_variation_email( $variation_id, $i, $variation ) {
    // Send email
}

Handlinger

Handlinger gør det muligt for dig at udføre kode, når en produktvariant er oprettet, opdateret eller slettet. Her er et eksempel på, hvordan du bruger en handling til at opdatere en produktvariants lagerbeholdning:

add_action( 'woocommerce_product_variation_set_stock', 'update_variation_stock', 10, 2 );
 
function update_variation_stock( $variation_id, $quantity ) {
    // Update stock
}

Shortcodes

Shortcodes gør det muligt for dig at indsætte produktvariantinformation på din WooCommerce-side. Her er et eksempel på, hvordan du bruger en shortcode til at vise en produktvariants navn og pris:

add_shortcode( 'product_variation', 'show_variation_info' );
 
function show_variation_info( $atts ) {
    $variation_id = $atts['id'];
 
    $variation = wc_get_product( $variation_id );
    $name = $variation->get_name();
    $price = $variation->get_price_html();
 
    return '

' . $name . ' - ' . $price . '

'; }

Opsummering

Oprettelse af produktvarianter programmatisk er en nyttig færdighed at have, når du sælger produkter med forskellige størrelser, farver eller andre karakteristika. WooCommerce giver dig mulighed for at oprette produktvarianter via en brugervenlig grænseflade, men du kan også oprette dem programmatisk ved hjælp af PHP. Derudover kan du bruge filtre, hooks, handlinger og shortcodes til at håndtere produktvarianter.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *