Wie kann ich den WooCommerce-Einkaufswagen mit meiner eigenen class, die WC_Cart erweitert, überschreiben?

In unserem Multi-Site-Netzwerk habe ich ein Plugin mit

if( is_main_site(get_current_blog_id()) ) WC()->cart = new WC_Custom_Cart; class WC_Custom_Cart extends WC_Cart { public function __construct() { } public function init() { } /** * Calculate totals for the items in the cart. * * @uses WC_Cart_Totals */ public function calculate_totals() { $this->reset_totals(); } /** * Add a product to the cart. * * @throws Exception Plugins can throw an exception to prevent adding to cart. * @param int $product_id contains the id of the product to add to the cart. * @param int $quantity contains the quantity of the item to add. * @param int $variation_id ID of the variation being added to the cart. * @param array $variation attribute values. * @param array $cart_item_data extra cart item data we want to pass into the item. * @return string|bool $cart_item_key */ public function add_to_cart( $product_id = 0, $quantity = 1, $variation_id = 0, $variation = array(), $cart_item_data = array() ) {} } 

Dies scheint nichts zu tun, denn wenn ich ein Produkt zum Warenkorb hinzufüge, sollte es die Summen zurücksetzen und dann nicht setzen, aber sie zeigen immer noch normal.

Letztendlich, was ich möchte, ist auf der Hauptseite, Produkte einschließlich variabler Produkte können in den Warenkorb in der Gesamtheit hinzugefügt werden (keine Variation Auswahl erforderlich), da sie nur für den Import in Unterwebsites, nicht kaufen ausgewählt werden. Die Preise sollten die benutzerdefinierten Felder “Cost” und “MSRP” anstelle des Preises / Verkaufspreises anzeigen, aber nichts berechnen.

UPDATE: Ich habe die 1. Zeile folgendermaßen geändert:

 class WooCustom { public function __construct() { if( is_main_site(get_current_blog_id()) ) { require_once('classes/wc-custom-cart.php'); // setup woocommerce to use your cart class add_action( 'woocommerce_init', 'wpwc7321_woocommerce_init' ); function wpwc7321_woocommerce_init() { if ( !is_admin() || defined( 'DOING_AJAX' ) ) { WC()->cart = new WC_Custom_Cart(); echo WC()->cart->get_total(); } } } } } $GLOBALS['woocustom'] = new WooCustom(); 

Ich habe die WC_Cart-class in meine kopiert, die Methode get_total () so geändert, dass sie 100 zurückgibt, und das ist tatsächlich die obige Ausgabe. Wenn ich jedoch ein Produkt über AJAX in den Archiven in den Archiven einfüge, dann sehe ich den Cart, der immer leer ist. Ich habe die obige Echozeile in WC-> cart-> what () geändert und meine benutzerdefinierte Erweiterungsklasse mit Ausnahme der what-Methode geleert, die $ this-> get_total () zurückgibt und den Standardwert $0.00 zurückgibt.

Wie kann ich einige dieser Methoden in meiner benutzerdefinierten class effektiv ersetzen / überschreiben ?!

Solutions Collecting From Web of "Wie kann ich den WooCommerce-Einkaufswagen mit meiner eigenen class, die WC_Cart erweitert, überschreiben?"