Produktvariationen von WC_Product_Variation abrufen

Lesezeit: 2 Minuten

Ich habe ein WooCommerce Webshop, wo T-Shirts verkauft werden. Wenn sich jemand den Einkaufswagen ansieht, möchte ich ihm die Möglichkeit geben, die Größe eines T-Shirts zu ändern. Derzeit sieht das Dropdown-Menü, das ich erstellt habe, folgendermaßen aus:

<?php
    if ( $item->is_type( 'variation' ) ){
?>
<select name="" class="product-size">
<?php
    foreach ( $item->get_available_variations() as $variation ):
?>
        <option value="">test</option>
<?php
    endforeach;
?>
</select>
<?php
   }
? >

Dies gibt mir jedoch den folgenden Fehler:

Fatal error: Uncaught Error: Call to undefined method WC_Product_Variation::get_available_variations()

Dann traf es mich; mein $item Variable, ist bereits eine Variation. Gibt es eine Möglichkeit, die anderen Variationen für dasselbe Produkt zu erhalten?

Vielen Dank

Benutzer-Avatar
Vidish Purohit

Wenn Sie den Typ Ihres Objekts überprüfen, gehört es zur Klasse WC_Order_Item_Product. Sie können dies verwenden

$variationId = $item->get_variation_id();

$variableProduct = new WC_Product_Variable($variationId)

$allVariations = $variableProduct->get_available_variations();

===================================

Ach ich verstehe. Sie können dies versuchen.

$parentData = $item->get_parent_id();
$variableProduct = new WC_Product_Variable($parentData)
$allVariations = $variableProduct->get_available_variations();

  • Der Typ meines Objekts ist WC_Product_Variation

    – Wesley

    8. Juni 2017 um 10:08 Uhr

Benutzer-Avatar
Professioneller_Helfer

Der Typname, nach dem Sie suchen sollten, ist „Variable“, nicht „Variation“:

if ($product->is_type( 'variable' ) {
    // do code 
}

Hier ist der Quellcode von WooCommerce, das die verfügbaren Produkttypen anzeigt:

/**
 * Get product types.
 *
 * @since 2.2
 * @return array
 */
function wc_get_product_types() {
    return (array) apply_filters(
        'product_type_selector',
        array(
            'simple'   => __( 'Simple product', 'woocommerce' ),
            'grouped'  => __( 'Grouped product', 'woocommerce' ),
            'external' => __( 'External/Affiliate product', 'woocommerce' ),
            'variable' => __( 'Variable product', 'woocommerce' ),
        )
    );
}

Andere StackOverflow-Antworten, die sich mit dem vorliegenden Problem befassen:

Überprüfung auf Produktvariationen

Abonnement-Variationen

Generell ist es wichtig, zunächst den Produkttyp anhand des zu prüfen $product->is_type('type') Methode zuerst. Dadurch wird sichergestellt, dass die Funktion nicht für Objekte aufgerufen wird, für die sie nicht geeignet ist. Damit die Bedingung richtig funktioniert, müssen Sie nach den entsprechenden Werten suchen. Sobald dies erledigt ist, sollte die Funktion ordnungsgemäß funktionieren.

1226730cookie-checkProduktvariationen von WC_Product_Variation abrufen

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy