Erweitern der WC_Product-Klasse in einem benutzerdefinierten Plugin-Fehlerproblem (WC_Product-Klasse nicht gefunden)

Lesezeit: 3 Minuten

Benutzer-Avatar von Elisabet González
Elisabet González

Ich versuche, die WC_Product-Klasse zu erweitern, um „property1“ und „property2“ zum geschützten Array $data hinzuzufügen, aber wenn ich versuche, mein Plugin auszuführen, erhalte ich die nächste Fehlermeldung:

WC_Produkt nicht gefunden.

Hier ist mein Code:

class WC_MyClass extends WC_Product {
    function __construct() {
        parent::__construct();
        array_push($data, "property1", "property2");
    }
}

Was ich brauche, ist die WC_Product-Klasse in meinem Plugin zu erweitern.

Plugin-Details: Mein Plugin besteht darin, die Versandkosten gemäß der FedEx-Tabellenrate für mein Land zu berechnen. Dazu verwende ich das Woocommerce Table Rate Shipping-Plugin. Das Problem ist, dass FedEx manchmal nicht das tatsächliche Gewicht, sondern das Volumen berücksichtigt. Deshalb möchte ich ein Plugin erstellen, um zu bestimmen, welches Gewicht größer ist, und es einer Variablen zuzuweisen. Die Idee besteht darin, ein Versandgewicht festzulegen, um es zur Berechnung der Versandkosten zu verwenden, und nicht, um die Spezifikation des Produktgewichts zu ändern. Aus diesem Grund versuche ich, die Klasse WC_Product zu erweitern, um ihr die Eigenschaft „Versandgewicht“ hinzuzufügen. Ich habe bereits alle Berechnungen durchgeführt, jetzt muss ich nur noch das Versandgewicht speichern, um es mit dem Woocommerce Table Rate Shipping-Plugin zu verwenden.

Dokumentation: WC_Product-Klasse – $data-Eigenschaft

  • Vielleicht include_once( WC_ABSPATH . 'includes/abstracts/abstract-wc-product.php' ); vor der Klassendefinition? Wie verwenden Sie Ihre WC_MyClass?

    – jeger

    12. September 2017 um 17:36 Uhr

  • Binden Sie dies ein, um es nach WooCommerce auszuführen? add_action( 'init', 'my_wrapper_function' ); Zum Beispiel wie in diesem Artikel: jeroensormani.com/adding-a-custom-woocommerce-product-type

    – Hose

    12. September 2017 um 17:37 Uhr

  • @pants Ich glaube, ich habe das Problem gefunden, das ich hatte add_action('woocommerce_after_shop_loop_item', 'myFunction', 10); aber ich hatte den Klassenteil herausgeschrieben myFunction()

    – Elisabet González

    12. September 2017 um 17:59 Uhr

  • @jeger, es gibt mir einen Fehler Warning: include_once(WC_ABSPATH/includes/abstracts/abstract-wc-product.php): failed to open stream

    – Elisabet González

    12. September 2017 um 18:02 Uhr

  • Möglicherweise müssen Sie diese WooCommerce-bezogene Dokumentation vorab lesen: Erstellen eines Plugins für WooCommerce Und Implementierung der WC-Integrationsklasse … Sie sollten (möglicherweise) erklären, was Sie in WooCommerce tun möchten (Aktualisierung Ihrer Frage), um eine genauere Hilfe zu erhalten.

    – LoicTheAztec

    12. September 2017 um 18:27 Uhr


Dave Hilditchs Benutzeravatar
Dave Hilditch

Wenn Sie die Extend-Funktion alleine haben, werden WooCommerce-Klassen noch nicht erstellt. Sie müssen die Klassenerweiterung hinzufügen init Haken bzw woocommerce_init so was:

add_action( 'init', 'register_myclass' );
function register_myclass() {
  class WC_MyClass extends WC_Product {
    /*now you can override whatever you like*/
  }
}

  • Bitte schauen Sie sich dies unter stackoverflow.com/questions/61551333/… an. Ich bin mir jedoch nicht sicher, ob es sich um dasselbe Problem handelt

    – svelandiag

    1. Mai 2020 um 21:53

Sie müssen PHP mitteilen, dass Sie das für eine Klassenvariable tun möchten

class WC_MyClass extends WC_Product {
  function __construct() {
    parent::__construct();
    $this->data[] = "property1";
    $this->data[] = "property2";
  }
}

  • Das behebt mein Problem nicht, das Problem ist, dass die WC_Product-Klasse nicht gefunden wird. Ich denke, das Problem hängt mit Verzeichnissen zusammen, aber ich möchte keine Woocommerce-Dateien ändern. Ich möchte mein eigenes Plugin verwenden, um einige Dinge von Woocommerce zu ändern, sodass ich nicht weiß, wie ich Zugriff auf die Klasse WC_Product bekomme.

    – Elisabet González

    12. September 2017 um 17:33 Uhr

  • Haben Sie Ihr Plugin in WordPress hinzugefügt und aktiviert?

    – Wodka

    12. September 2017 um 17:41 Uhr

  • Ja, eigentlich hatte ich vorher keine Probleme mit meinem Plugin, da ich keine Klasse erweitert habe. Ich hatte nur den logischen Teil meines Plugins codiert, aber jetzt möchte ich einen Wert direkt in einer Woocommerce-Klasse speichern, muss dazu aber ein neues Element in einem geschützten Array hinzufügen, also möchte ich diese Klasse erweitern.

    – Elisabet González

    12. September 2017 um 18:08 Uhr

  • @ElisabetGonzález, hast du zufällig eine funktionierende Lösung dafür gefunden? Ich stehe derzeit vor der gleichen Situation. Ich muss die WC_Product-Klasse erweitern, um einige Elemente zum geschützten $data-Array hinzuzufügen und auch einige neue Funktionen hinzuzufügen, aber ich kann es nicht zum Laufen bringen. Können Sie bitte helfen?

    – Rauben

    5. Mai 2020 um 7:13 Uhr


1450910cookie-checkErweitern der WC_Product-Klasse in einem benutzerdefinierten Plugin-Fehlerproblem (WC_Product-Klasse nicht gefunden)

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

Privacy policy