Extend class funktioniert nicht

  • Hallo,

    ich möchte eine Klasse von WooCommerce Bookings erweitern (ist für mein Problem aber denke ich nicht relevant).

    Ich habe die Erweiterung in der Original-Datei des Plugins durchgeführt, dort funktioniert es. Ich möchte in der function is_bookable in der class WC_Booking_Form eine weitere if-Schleife einfügen. Nun wollte ich die Änderung in meine functions,php mit aufnehmen, indem ich die class extende. Das funktioniert aber leider gar nicht.

    Hier der Code von WooCommerce Booking:
    /wp-content/plugins/woocommerce-bookings/includes/booking-form/class-wc-booking-form.php
    (ich habe hier nur die relevante Funktion kopiert)

    Code
    class WC_Booking_Form {
    ...
        public function is_bookable( $data ) {
    ...
            }
    ...
    }


    Hier mein Code:
    /wp-content/themes/MEINTHEME/functions.php

    Ich scheine wohl irgendetwas in der Syntax der extended class falsch gemacht zu haben, aber ich finde den Fehler nicht.

    Ich bin für jede Hilfe dankbar!

    Beste Grüße,
    cs-m3rlin

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Es wäre sinnvoll, wenn du angibst welche Fehlermeldung du bekommst.
    Ist die Klasse überhaupt schon definiert wenn du sie erweitern willst?

    "Gewinnspiele, Gutscheinaktionen, Werbung, insbesondere kommerzielle, ist sowohl in Signaturen als auch Beiträgen ohne vorherige Genehmigung des Betreibers verboten. Bei Zuwiderhandlung behalten wir uns vor die Beiträge zu löschen und den entsprechenden User zu sperren." Auszug aus den WPDE.org Nutzungsbedingungen

  • Hi,
    vielen Dank für die Antwort. Sorry für die späte Rückmeldung, ich war unterwegs...
    Ich bekomme keine Fehlermeldung von PHP, die Anpassung liegt direkt auf dem Host Server. Ich sehe nur, dass die if-Schleife meiner Extension nicht getriggert wird... dachte, dass es vielleicht nur an der Syntax hängt?
    Wenn ich in der functions.php eine neue leere class WC_Booking_Form erstelle, meldet er einen Fehler, dass es bereits diese Klasse gibt, daher gehe ich davon aus, dass die Klasse bereits definiert ist.

    Ist das denn so wie oben definiert (insbesondere der Teil parent::is_bookable($data); ) korrekt?
    Die if-Schleife funktioniert auf jeden Fall, denn wenn ich sie in die obige Funktion direkt einfüge (dafür verändere ich aber das WooCommerce Bookings Plugin), dann funktioniert es.

    Beste Grüße,
    cs-m3rlin

  • Grundsätzlich sollte das so funktionieren.
    Ich weiß natürlich nicht wie du das ganze überhaupt aufrufst und wie du "merkst", dass es nicht funktioniert.
    Ohne Fehlermeldungen kannst du halt nicht debuggen.
    Probier das Ganze doch erst mal lokal, wenn du keinen vernünftigen Zugriff auf den Server und dessen error log hast.

    "Gewinnspiele, Gutscheinaktionen, Werbung, insbesondere kommerzielle, ist sowohl in Signaturen als auch Beiträgen ohne vorherige Genehmigung des Betreibers verboten. Bei Zuwiderhandlung behalten wir uns vor die Beiträge zu löschen und den entsprechenden User zu sperren." Auszug aus den WPDE.org Nutzungsbedingungen

  • Hi,
    ich habe gerade noch einmal getestet.

    Code
    if ( class_exists( 'WC_Booking_Form' ) ) {
    echo '<script>console.log("Existiert")</script>';
    };


    gibt ein "Existiert" zurück.

    Ansonsten stehen im Log ein paar Warnungen zu CGI, aber nichts, das mit der Klasse zu tun hat.
    Habe das jetzt über Chrome Logger geloggt, ich weiß daher nicht, ob du damit etwas anfangen kannst, sind über 10000 Zeichen, daher kann ich es nicht posten.

    Grundsätzlich sollte das so funktionieren.
    Ich weiß natürlich nicht wie du das ganze überhaupt aufrufst und wie du "merkst", dass es nicht funktioniert.
    Ohne Fehlermeldungen kannst du halt nicht debuggen.
    Probier das Ganze doch erst mal lokal, wenn du keinen vernünftigen Zugriff auf den Server und dessen error log hast.

    Okay, ich werde das dann noch mal lokal testen.
    Ich merke es, weil die if-Schleife im Front-End (also in dem Webshop) nicht berücksichtigt wird.

    Danke schon mal!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!