Child Theme: Anpassungen an Dateien in Unterordnern / Unterverzeichnissen

  • Hallo liebes Forum,

    diese Frage ist sicher nicht neu... Aber ich schlage mich damit schon seit längerer Zeit rum und habe bisher noch immer keine Lösung dafür gefunden. Auch hier im Forum taucht die Frage öfters mal auf, wird aber nirgends bis zum Ende beantwortet. :sad:

    Also:
    Ich habe ein Child-Theme erstellt. Wenn ich nun Anpassungen an php-Dateien machen möchte, die im Parent-Theme liegen, ist das gar kein Problem, solange diese im Hauptverzeichnis des Parent-Themes liegen. Ich kopiere dann einfach die Datei in mein Child-Theme Hauptverzeichnis und die Änderung wirkt sich auf mein Theme aus.

    Aber:
    Wenn eine Datei, die angepasst werden soll, in einem Unterverzeichnis des Parent-Themes liegt, gibt es ein Problem. Ich habe versucht, dieselbe Ordner-Hierarchie auch im Child-Theme Verzeichnis abzubilden, und dort dann die kopierte Datei reinzulegen, aber die Änderungen werden einfach ignoriert.

    Beispiel:
    "/wp-content/themes/name-des-themes/library/includes/template-tags.php" soll angepasst werden.


    Was muss ich genau tun, damit auch Unterverzeichnisse eines Parent-Themes vom Child-Theme überschrieben werden können?

    Gibt es dafür irgendwo eine Schritt-für Schritt Erklärung? Denn bisher habe ich immer nur Brüchstück-Antworten gefunden... :sad:

    1000 Dank für eine Antwort!
    Moriaan

    • 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

  • Was muss ich genau tun, damit auch Unterverzeichnisse eines Parent-Themes vom Child-Theme überschrieben werden können?

    Je nach Theme können unterschiedliche Dateien "überschrieben" werden, das liegt ganz an der jeweiligen Programmierung des Themes. Manche Themes lassen auch das Überschreiben einzelner [FONT=courier new]functions[/FONT] zu, erkennbar daran, dass diese bei der Definition eine [FONT=courier new]functions_exists()[/FONT] Kapselung aufweisen, das nennt man auch "pluggable". Wenn beides nicht geht, wende Dich am besten an den Autor des Parent-Themes.

  • Ja, das mit dem Überschreiben der functions habe ich bereits herausgefunden. Mein theme kapselt alle functions in diese if-Abfrage ein und somit habe ich bereits functions kopiert und in meine functions.php eingefügt und verändert. Das klappt auch alles soweit.

    Aber es geht mir konkret gar nicht um functions, sondern um die Anpassung an diversen php-Dateien im Theme. Dort möchte ich verschiedene if-else Abfragen ändern, oder auch html-tags anpassen. Das sind leider alles Anpassungen, die nicht über css zu lösen sind. Du schreibst:

    Zitat

    Je nach Theme können unterschiedliche Dateien "überschrieben" werden, das liegt ganz an der jeweiligen Programmierung des Themes.


    Das verstehe ich nicht... Was macht denn das Theme, dass manche Dateien in Unterverzeichnissen überschrieben werden können und manche nicht?

  • Was macht denn das Theme, dass manche Dateien in Unterverzeichnissen überschrieben werden können und manche nicht?

    Manche Themes verwenden zum Einbinden von Dateien z.B. nicht richtigerweise [FONT=courier new]get_template_part()[/FONT] oder [FONT=courier new]get_stylesheet_directory()[/FONT] sondern irgendwelche anderen Wege, die nicht mit Child-Themes kompatibel sind.

  • ahaa...

    das heißt: wenn die Dateien richtig eingebunden sind (so wie Du oben beschrieben hast), dann ist es problemlos möglich, dass ich in meinem Child-Theme dieselbe Ordner-Hierarchie wie im Parent-Theme aufbaue, dann die Dateien dort reinkopiere und anpasse?

    Denn bisher habe ich dieses Problem immer und immer wieder gehabt (bei diversen Themes): die Änderungen an den Dateien, die im Child-Theme in den Unterverzeichnissen liegen, werden einfach ignoriert. Der einzige Weg, wie es funktioniert, ist NUR über eine Anpassung der Original-Dateien im Eltern-Theme.

    Das würde ja heißen, dass ich immer nur schlecht programmierte Themes ausgewählt habe! Allerdings waren auch diverse kostenpflichtige Themes dabei, dort funktionierte die Anpassung auch bisher nie...

  • das heißt: wenn die Dateien [im Parent Theme] richtig eingebunden sind... dann ist es problemlos möglich, dass ich in meinem Child-Theme dieselbe Ordner-Hierarchie wie im Parent-Theme aufbaue, dann die Dateien dort reinkopiere und anpasse?

    Ja, so ist das gedacht, und/oder auch über den "pluggable" Weg bei einzelnen Funktionen, Child Themes Codex.

    ..dass ich immer nur schlecht programmierte Themes ausgewählt habe..

    Sieht so aus. Und Kostenpflichtigkeit ist wahrlich keine Garantie für guten Code...

  • So langsam wird mir das Ganze dann doch etwas (aber nur etwas :neutral:) klarer.
    Erstmal Danke für Deine erhellenden Antworten!

    Eine letzte Frage aber doch noch: Was hat es denn dann mit dem Einbinden von Dateien mittels "require_once( get_stylesheet_directory()..." auf sich?
    siehe hier

    Bezieht sich das nicht auf Dateien, die man aus dem Eltern-Theme kopiert und dann im Child-Theme einbindet? Das dachte ich jedenfalls immer...
    Vor kurzem hatte ich diesen Artikel zu dem Theme gelesen (wie gesagt, ich schlage mich schon länger mit dieser Frage herum...), aber mir ist nicht wirklich klar, was das soll. Bzw. ob das überhaupt nötig ist, wenn das Theme, so wie Du oben beschrieben hast, gut programmiert ist...

  • Eine letzte Frage aber doch noch: Was hat es denn dann mit dem Einbinden von Dateien mittels "require_once( get_stylesheet_directory()..." auf sich?

    Damit bindet das Parent-Theme eine Datei aus dem eigenen Verzeichnis ein wenn es selbst aktiv ist, aber aus dem Child-Theme Verzeichnis wenn ein Child-Theme aktiv ist.

  • also jetzt nochmal langsam... jetzt bin ich nämlich komplett verwirrt.

    Welchen Weg nehme ich denn jetzt, um Dateien aus dem Parent-Theme (die in einem Unterverzeichnis liegen) für das Child-Theme anzupassen ?
    Im Grunde bin ich schon wieder bei derselben Frage wie ganz oben in diesem Thread!

    So wie ich das jetzt verstehe, gibt es also tatsächlich zwei Wege:

    1. Möglichkeit: Ich bilde im Child-Theme dieselbe Ordner-Hierarchie ab wie im Parent-Theme, lege die angepassten Dateien aus dem Parent-Theme hinein und alles ist gut. Das klappt allerdings NUR, wenn das Parent-Theme richtig programmiert ist.

    2. Möglichkeit: Wenn das Parent-Theme nicht richtig programmiert ist, kann ich das System dennoch dazu bringen, die angepassten Dateien aus dem Child-Theme zu verwenden anstelle denen aus dem Parent-Theme, indem ich sie wie hier in meiner functions.php einbinde:
    require get_stylesheet_directory() . '/subfolder/theme-subfile.php';

    IST DAS SO RICHTIG?
    Sorry, dass ich hier zigfach nachfrage, aber ich finde auf diese Fragen leider nirgends schlüssige Antworten. Daher auch erneut meine Frage von oben:
    Was muss ich genau tun, damit auch Unterverzeichnisse eines Parent-Themes vom Child-Theme überschrieben werden können?

    VG und Danke für Hinweise und Antworten
    Moriaan

Jetzt mitmachen!

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