Im Child-Theme eine Funktion des Parent Theme ändern?

  • Hallo zusammen.

    Mein Theme hat einen Unterordner inc, und bindet dort angelegte Skripte mittels include in der functions.php ein.
    So stellt es z.B. eine Funktion für Breadcrumbs zur Verfügung.

    Nun möchte ich die Funktion für die Breadcrumbs ersetzen und habe im Child Theme ebenfalls eine gleichnamige Funktion erstellt.
    In Konsequenz hagelt es nun aber ein “cannot redeclare function“, wenn das Parent Theme abgearbeitet wird.

    Wie kann ich das vermeiden?
    - Mir wäre es wichtig, wenn ich den identischen Funtionsnamen behalten kann, damit ich dann nicht alle Dateien des Themes modifizieren muss.

    Danke und Gruß,
    Marcus

    • 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

  • Mojn,

    ich habe das auch erst einmal gemacht, allerdings bezog sich das damals eher auf die Verwendung eigener Header Bilder.

    Theoretisch sollte es schon möglich sein die Original Funktion in der functions.php des Childthemes wegzufiltern und durch eine eigene zu ersetzen.

    Ich habe noch mal gesucht und meine den Tipp gefunden zu haben, der mir damals dabei half.
    http://wordpress.stackexchange.com/questions/1454…n-a-child-theme

    Ansonsten müsste ich mal auf Suche gehen, wo ich das Theme bei dem ich das damals gemacht hatte vergraben habe.

    Bitte keine Fragen per PM, oder Foren-Chat. Für Fragen ist das öffentliche Forum da. Meine Uerdinger Seite

  • Hallo Marcus,
    das klingt interessant. Ich bräuchte demnach einen Hook, der irgendwo zwischen dem Abarbeiten der functions.php im Parent Theme liegt und der ersten Benutzung der Funktion. Die Funktion wird ja in dem page-Templates verwendet, um den Breadcrumb auszugeben.

    Welcher Hook bietet sich denn dafür an?
    Laut dieser Artikel hier könnte das der "init" Hook sein:

    http://stackoverflow.com/questions/1594…or-page-loading

    Vielen Dank schon mal.

    Gruß,
    Marcus

  • Eigentlich sollte das Parenttheme seine Funktion nur laden, wenn es diese noch nicht gibt. So kann man die Funktion durch ein Childtheme ersetzen. Ansonsten ist es besser die Parentfunktion zu entfernen (remove_action, remove_filter) uns zwar exakt so wie dies geladen wurde (Hook, Prioriät), danach kann man die eigene Funktion laden (mit einer um 1 niedrigeren Priorität. Manchmal bieten die Themehersteller aber selbst Filter um z.B. die Breadcrumps zu modifizieren (einfach mal in die Funktion schaun)

    WordPress ist "frei" wie in Freiheit es zu nutzen, aber nicht im Sinne von Freibier. Wer also glaubt man bekommt rund um WordPress alles kostenlos, der irrt. Hilfe ist ein Geschenk für das man sich bedankt, dafür gibt es den 'Gefällt mir' Button. Wer das nicht kann und sich selbst nicht zu helfen weiss, muss sich bezahlte Unterstützung suchen.

  • 1) Ok, also zumindest ist innerhalb der breadcrumb-Funktion schon mal kein Hook drin. Da ist immer noch echo, echo, echo drin ;-)
    2) Wenn ich statt dessen meine eigene Datei gleich benenne und innen drin die Funktion den gleichen Namen hat, dann kommt es auch zu einer Fehlermeldung.
    3) Und der Weg über remove_action klappt auch nicht, da die Funktion ja nicht an einem der Hooks dran klebt.

    Ich denke, ich werde einfach die Kollision vom Child Theme aus so nicht verhindern können und muss das Parent Theme mit ändern.
    Werde mal den Autor des Themes kontaktieren.

Jetzt mitmachen!

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