Woocommerce erhält die Produkt-SKU für eine einzelne Produktseite in functions.php

Lesezeit: 3 Minuten

Benutzer-Avatar
Brad14

Ich habe große Probleme, die Produkt-SKU für ein Produkt auf einer einzelnen Produktseite innerhalb von functions.php zu erhalten. Ich habe mehrere einzelne Produktseiten und möchte, dass je nach Produkt unterschiedlicher Text angezeigt wird. Ich habe ein untergeordnetes Thema erstellt und arbeite in der Datei functions.php. Ich bin neu in WordPress und bearbeite Themen, daher verstehe ich die Reihenfolge der Vorgänge noch nicht ganz. Ich konnte den Code zum Laufen bringen und mir alle SKUs für alle Produkte geben, aber das ist unabhängig von der tatsächlichen Seite, auf der ich mich befinde.

Ich habe einiges ausprobiert. Die gängige Lösung scheint zu sein:

global $product;
echo $product->get_sku(); 

aber das geht nicht. Aus irgendeinem Grund ist die Variable $product im Skript functions.php null.

Die Schleife, die ich habe, durchläuft alle Produktbeiträge und erhält die Beitrags-ID. Ich habe auch versucht, die ID der aktuellen Seite abzurufen, war aber auch dabei erfolglos (der folgende Code wurde von einer anderen Site kopiert). Jede Hilfe wäre sehr willkommen. Vielen Dank.

$full_product_list = array();
    $loop = new WP_Query( array( 'post_type' => array('product', 'product_variation'), 'posts_per_page' => -1 ) );

    while ( $loop->have_posts() ) : $loop->the_post();
        $theid = get_the_ID();
        $product = new WC_Product($theid);

  • Auf welchem ​​Hook/Template führen Sie Ihren Code aus?

    – Helgathewikinger

    13. September 2015 um 3:18 Uhr

  • Ich habe ein untergeordnetes Thema erstellt und bearbeite das Skript functions.php. Ich habe kein Problem mit den Hooks in Woocommerce. Meine Aktion sieht in etwa so aus: add_action( ‘woocommerce_after_single_product_summary’, ‘wc_product_add_text’, 35 );

    – brad14

    13. September 2015 um 18:59 Uhr

get_sku() funktioniert einwandfrei, vorausgesetzt, dass Ihr Thema nicht entfernt wurde woocommerce_after_single_product_summary aus irgendeinem Grund.

add_action( 'woocommerce_after_single_product_summary', 'so_32545673_add_sku', 35 );
function so_32545673_add_sku(){
    global $product;
    if( $product->get_sku() ) {
        echo 'the sku = ' . $product->get_sku(); 
    }
}

Ich habe die Ausgabe zuerst nicht gesehen, weil sie unter allen verwandten Produkten und Upsells usw.

Zusätzlich möchten Sie vielleicht zu wechseln wc_get_product() anstatt zu versuchen, die Klasse direkt anzurufen. Mit dem Folgenden erhalte ich eine Liste der Produkt-SKUs. Sie sollten eine verwenden if( $loop->have_posts() ) die zu öffnen <ul> aber ich bin faul.

$loop = new WP_Query( array( 'post_type' => array('product', 'product_variation'), 'posts_per_page' => -1 ) );

while ( $loop->have_posts() ) : $loop->the_post();
    $theid = get_the_ID();
    $product = wc_get_product($theid);

    if( $product->get_sku() ) echo '<li>' . $product->get_sku() . '</li>';
endwhile;

  • Ich habe den Inhalt in der Datei functions.php gelöscht und in der sku-Funktion hinzugefügt und es hat funktioniert. Ich bin mir nicht sicher, was ich vorher gemacht habe, aber Ihre Implementierung unterscheidet sich nicht wesentlich von dem, was ich zuvor versucht hatte. Es muss etwas an der Anordnung der Dinge in der PHP-Datei gelegen haben. Anway, ich habe alles wieder hinzugefügt und es funktioniert jetzt. Vielen Dank!

    – brad14

    13. September 2015 um 20:46 Uhr

  • Vielleicht hatten Sie etwas anderes in Ihren Funktionen, das alles durcheinander gebracht hat. Manchmal müssen Sie zu einer leeren Datei zurückkehren, um sie zu sortieren. 🙂

    – Helgathewikinger

    14. September 2015 um 0:17 Uhr

1257090cookie-checkWoocommerce erhält die Produkt-SKU für eine einzelne Produktseite in functions.php

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

Privacy policy