WooCommerce-Kompatibilität – Verwendung der Methode get_id() mit älteren Versionen in Plugins von Drittanbietern

Lesezeit: 2 Minuten

WooCommerce Kompatibilitat – Verwendung der Methode get id mit alteren Versionen in
Ciarán Flanagan

Weiß jemand, ob es möglich wäre, die hinzuzufügen get_id() Methode mit einer älteren Version von WooCommerce in einem Plugin eines Drittanbieters, damit es mit dem Google-Tag-Manager-Plugin funktioniert?

Ich möchte das Plugin jetzt nicht aktualisieren, da dies die Site durcheinander bringen würde.

Weiß jemand, ob es möglich ist?

Danke

1647181148 310 WooCommerce Kompatibilitat – Verwendung der Methode get id mit alteren Versionen in
LoicTheAztec

Ja, Sie können die PHP-Funktion verwenden method_exists() auf jedem WooCommerce-Objekt wie WC_Product oder WC_Order Objekte …

Hier ein Beispiel mit WC_Product Objekt $product:

// WooCommerce retro-compatibility (compact)
$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $order->id;

Oder Sie können auch die PHP-Funktion version_compare() verwenden:

// WooCommerce retro-compatibility (2)
if ( version_compare( WC_VERSION, '3.0', '<' ) ) {
    // Older than 3.0
    $product_id = $product->id;
} else {
    // 3.0 and above
    $product_id = $product->get_id();
}

und das gleiche in kompakter Form:

$product_id = version_compare( WC_VERSION, '3.0', '<' ) ? $product->id : $product->get_id();

(der $product ist eine bestehende und definiert WC_Product Objekt…)

  • Das würde also funktionieren? $product_id = method_exists( $order, 'get_id' ); an Stelle von? $product_id = $product->get_id(); Produkt ist bereits definiert?

    – Ciarán Flanagan

    20. Juli 2017 um 20:32 Uhr


  • @ciaranpflanagan Ich habe meine Antwort mit aktualisiert $product anstatt $order … Und ja die $product ist ein definiertes und vorhandenes WC_Product-Objekt (genau wie in älteren Versionen von WooCommerce) … Diese Antwort ermöglicht es, Ihrem Code eine Versionskompatibilität zu geben. Ihr Code funktioniert also auch mit WC 2.6.x und WC 3+

    – LoicTheAztec

    20. Juli 2017 um 21:02 Uhr

  • Nur um den obigen Kommentar zu klären, die Produktvariable ist bereits definiert. Ich bin mir nicht sicher, warum ich ein ? hinzugefügt habe.

    – Ciarán Flanagan

    20. Juli 2017 um 21:02 Uhr

  • Entschuldigung, es sollte den ersten Kommentar klären, weil mir klar wurde, dass die Frage, ob die Produktvariable bereits definiert war, obwohl ich wusste, dass sie es war, etwas verwirrend gewesen sein könnte. Danke, deine Antwort funktioniert einwandfrei

    – Ciarán Flanagan

    20. Juli 2017 um 21:08 Uhr

  • Fertig, was wäre der beste Weg, um eine aufgerufene Funktion hinzuzufügen get_id(); zum Woocommerce-Plugin mit Ihrem Code, damit andere Plugins darauf zugreifen können. Zum Beispiel habe ich ein Plugin, das sich mithilfe von integriert get_id(); funktionieren, aber ich möchte vermeiden, das Plugin zu bearbeiten, falls ich es in Zukunft aktualisieren möchte?

    – Ciarán Flanagan

    20. Juli 2017 um 21:27 Uhr

Sie können dies für die Codekompatibilität mit der alten Version verwenden

global $woocommerce;
// if old version of WooCommerce
$product_object = version_compare( $woocommerce->version, '3.0', '<' ) ? 
$order_data->get_product_from_item( $item ) : $item->get_product();

998020cookie-checkWooCommerce-Kompatibilität – Verwendung der Methode get_id() mit älteren Versionen in Plugins von Drittanbietern

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

Privacy policy