Geben Sie spezifische Produktattribute und Metadaten im WooCommerce-Warenkorb wieder

Lesezeit: 4 Minuten

Benutzeravatar von Steven Wright
Steven Wright

Update (im Zusammenhang mit Autorenkommentaren):

Ich möchte WooCommerce cart.php anpassen, um einige Metadaten anzuzeigen, die auf der Produktseite problemlos funktionieren Essential Grid-Premium-Plugin.

Ich möchte einige Produktattributfelder und auch einige benutzerdefinierte Metafelder anzeigen, die ich mit erstellt habe Ersteller von Metafeldern von Wesentliches Raster Plugin.

Zum Testen verwende ich 'Height' Attribut (so 'pa_height') und das benutzerdefinierte Feld 'Age' welche Schnecke ist 'eg-age-cal'.

Derzeit habe ich versucht, Folgendes zu verwenden:

<?php echo get_post_meta($product_id, 'pa_height', true );?>

Und auch:

<?php echo get_post_meta($product_id, 'eg-age-cal', true );?>

Aber diese scheinen nicht zu funktionieren.

Ich habe es geschafft, den Code zum Laufen zu bringen mit:

<?php echo get_post_meta($product_id, '_regular_price', true );?>

Ich weiß also, dass der Code funktioniert.

Ich brauche nur Hilfe beim Ausarbeiten, wie ich die Werte aus diesen benutzerdefinierten Attributen und benutzerdefinierten Feldern erhalten kann.

Vielen Dank.

Benutzeravatar von LoicTheAztec
LoicTheAztec

Aktualisieren (Kompatibilität mit WC 3+)

Nach Ihren Erklärungen in Ihrem Kommentar unten entdecke ich gerade, dass Sie verwenden Essential Grid-Premium-Plugin (ein kommerzielles Plugin) um einige benutzerdefinierte Felder und Attribute zu erstellen, die sich auf Ihre WooCommerce-Produkte beziehen.

An dieser Stelle, Ich kann nicht helfenda ich dieses Plugin noch nie zuvor verwendet habe und nicht weiß, wo Daten innerhalb dieses Plugins in der Datenbank gespeichert werden.

Ich denke, dass Sie die üblichen WordPress/WooCommerce-Funktionen nicht verwenden können, um diese Daten zu erhalten, und das ist der Grund dafür Sie erhalten keine Daten mit get_post_meta() wie gewöhnlich…

Der beste Weg, um geholfen zu werden, ist:

– zum Durchsuchen/Durchsuchen Ihrer Datenbank nach diesen benutzerdefinierten Felddaten.
– zu suchen/einzufragen Wesentliches Raster Plugin-Autoren unterstützen Threads.


Meine ursprüngliche Antwort:

Für in Ihren Produkten definierte Attributeverwenden get_post_meta() Funktion mit der $product_id Variable, Sie müssen sie auf diese Weise verwenden, um die gewünschten Daten zu erhalten (dies ist ein Array von Werten):

// getting the defined product attributes
$product_attr = get_post_meta( $product_id, '_product_attributes' );

// displaying the array of values (just to test and to see output)
echo var_dump( $product_attr );

Sie können die Funktion auch verwenden get_attributes() (eher empfehlenswert)Hier entlang:

// Creating an object instance of the product
$_product = new WC_Product( $product_id );

// getting the defined product attributes
$product_attr = $_product->get_attributes();

// displaying the array of values (just to test and to see output)
echo var_dump( $product_attr );

Der gesamte Code ist getestet und funktioniert.

JETZT WERDEN WARENKORB-DATEN IN COOKIES UND SITZUNGEN GESETZT und Sie müssen verwenden WC()->cart Syntax zum Abrufen von Warenkorbdaten und Artikeln

Sie können also diese Art von Code verwenden, um die Artikel (Produkte) in den Warenkorb zu bekommen:

foreach ( WC()->cart->get_cart() as $cart_item ) {
    $product = $cart_item['data'];
    if(!empty($product)){

        // getting the defined product attributes
        $product_attr = $_product->get_attributes();

        // displaying the attributes array of values (just to test and to see output)
        echo var_dump( $product_attr ) . '<br>';
    }
}

Dadurch wird das Attribut-Array mit Werten für jedes Produkt im WARENKORB angezeigt.


Eine Lösung bezogen auf dieser Fadenverwenden wc_get_product_terms() innerhalb desselben Code-Snippets, um Ihr Attribut abzurufen:

foreach ( WC()->cart->get_cart() as $cart_item ) {
    $product = $cart_item['data'];
    if(!empty($product)){

        // compatibility with WC +3
        $product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id;

        // Getting "height" product attribute
        $myAttribute = array_shift( wc_get_product_terms( $product_id, 'pa_height', array( 'fields' => 'names' ) ) );
        echo $myAttribute . '<br>';
    }
}

Verweise:

  • Erstaunlich, danke! Ich werde diesen Code jetzt überprüfen und sehen, ob es das ist, was ich brauche :). Entschuldigung für meine verspätete Antwort, habe mich gerade erst wieder angemeldet

    – Steven Wright

    8. August 2016 um 9:41 Uhr

  • @StevenWright Kein Problem. Wenn Sie mir nur sagen können, wie Sie dieses benutzerdefinierte Feld erhalten und wie Sie es in DB speichern … Danke

    – LoicTheAztec

    8. August 2016 um 9:44 Uhr

  • Entschuldigung, ich bin ein wenig verwirrt mit Ihrem obigen Code (ich bin nur ein PHP-Anfänger) – Ich habe die von Ihnen bereitgestellten Code-Snippets hinzugefügt, aber beide var_dumps geben genau die gleichen Arrays aus, keine tatsächlichen Werte für die Felder (zB height B. 123 sein). Mit dem benutzerdefinierten Feld mussten wir es schließlich mit dem Plugin „Essential Grid“ erstellen und ihren Metafeld-Ersteller verwenden, damit es gut mit ihrem Plugin zusammenspielt. Danke für deine Hilfe bisher 🙂

    – Steven Wright

    8. August 2016 um 10:08 Uhr

  • @StevenWright Aktualisiert Ihre Frage und meine Antworten… Da Sie ein kommerzielles Plugin verwenden, wird es für Sie sehr schwierig sein, hier Hilfe zu bekommen, weil nur wenige Leute dieses kommerzielle Plugin haben und verwenden. Siehe meine aktualisierte Antwort für Lösungen.

    – LoicTheAztec

    8. August 2016 um 20:07 Uhr


  • Dasselbe Problem mit wc_get_product_terms() und benutzerdefinierten Attributen ohne kommerzielles Plugin. Einige Produkte mit kommagetrenntem Attributwert geben einen leeren Wert zurück. $product->get_attributes() und foreach-Schleife funktionieren. Ist ein Fehler in dieser Funktion.

    – jMike

    8. Dezember 2016 um 17:44 Uhr

1393540cookie-checkGeben Sie spezifische Produktattribute und Metadaten im WooCommerce-Warenkorb wieder

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

Privacy policy