Der zweite Parameter einer Woocommerce-Hooked-Funktion gibt NULL anstelle eines Objekts zurück

Lesezeit: 2 Minuten

Benutzeravatar von Sam Ritter
Sam Ritter

In der Woocommerce-Dokumentation wird die woocommerce_get_price_html Filterhaken befindet sich in get_price_html() -Methode soll einen Rückruf entgegennehmen, der bis zu akzeptiert zwei Parameterein Preis und ein Produkt.

Aber wenn ich versuche, auf das Produkt zuzugreifen, erhalte ich eine NULL anstelle des WC_Product-Objekts.

Hier ist mein Testcode:

add_filter( 'woocommerce_get_price_html', function( $price, $item ) {
    echo var_dump ($item); // NULL
    return $price;
});

Übersehe ich etwas?

  • Das ist mir gerade eingefallen, aber nimmt add_filter keinen Parameter, der angibt, wie viele Parameter der Rückruf braucht?

    Benutzer10957435

    11. März 2019 um 1:52 Uhr

  • @Chipster warum ja, tut es! Und dieser Parameter ist standardmäßig auf 1 gesetzt, was deutlich macht, warum ich NULL für meinen zweiten Parameter erhalten habe. Vielen Dank!

    – Sam Ritter

    11. März 2019 um 12:13 Uhr

Sie müssen die 2 Parameter, die Sie für diesen Hook verwenden, in Ihrer Hook-Funktion direkt nach der Hook-Priorität auf diese Weise deklarieren:

add_filter( 'woocommerce_get_price_html', function( $price, $product ) {
    echo var_dump ($product); // The WC_Product object instance
    return $price;
}, 10, 2 );

Und es ist besser, Ihre Funktion zu benennen, wie:

add_filter( 'woocommerce_get_price_html', 'filter_woocommerce_get_price_html', 10, 2 ); 
function filter_woocommerce_get_price_html( $price, $product ) {
    echo var_dump ($product); // The WC_Product object instance
    return $price;
}

Diesmal sollten Sie in der Lage sein, die Variable zu erhalten $product Objekt…

Siehe Dokumentation für add_action() und add_filter() WordPress-Funktionen.

  • Danke! Warum ist es besser, Ihre Funktion zu benennen, anstatt eine anonyme zu erstellen?

    – Sam Ritter

    11. März 2019 um 20:29 Uhr


  • @SamRitter Weil es erlaubt, eine lesbare und verwendbare Referenz für die Hook-Funktion festzulegen, die (später) weiter verwendet werden kann. Es ist eine gute Angewohnheit, genau wie das Kommentieren, Formatieren Ihres Codes oder das Hinzufügen verständlicher Variablennamen … Auch wenn Sie den Hook wiederverwenden müssen und erneut eine anonyme Funktion verwenden, erhalten Sie einen Fehler.

    – LoicTheAztec

    11. März 2019 um 20:35 Uhr


Benutzeravatar von mujuonly
mujunur

Geben Sie hier die Bildbeschreibung ein

Es gibt 3 Stellen, an denen dieser Filter eingehakt ist. Drei davon haben zwei Parameter.

Versuchen Sie es auf diese Weise, wenn aber

add_filter( 'woocommerce_get_price_html', 'alter_price', 10, 2 );

function alter_price( $price, $item ) {
    echo var_dump ($item); 
    return $price;
}

1428580cookie-checkDer zweite Parameter einer Woocommerce-Hooked-Funktion gibt NULL anstelle eines Objekts zurück

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

Privacy policy