1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

Unterordner im Child Theme nutzen

Dieses Thema im Forum "Design" wurde erstellt von TonyMacarony, 30. November 2016.

Schlagworte:
  1. TonyMacarony

    TonyMacarony Well-Known Member

    Registriert seit:
    15. November 2016
    Beiträge:
    99
    Zustimmungen:
    0
    Hallo Leute,

    ich habe wie hier im Forum erklärt wurde ein Child-Theme erstellt und die Dateien aus dem Hauptverzeichnis integriert. Funktioniert auch alles soweit, jedoch ist mir immer noch nicht klar, wie man Unterordner aus dem Parent auch im Child laden kann. Da ich einige Dateien aus Unterordnern anpassen musste, aber nicht möchte dass diese beim nächsten Theme-Update überschrieben werden, möchte ich diese ins Child-Verzeichnis kopieren. Geht das überhaupt- und wenn ja, wie?
     
  2. son10

    son10 Well-Known Member

    Registriert seit:
    30. April 2010
    Beiträge:
    310
    Zustimmungen:
    1
    Dein Child-Theme-Ordner liegt ja unter /wp-content/themes/deinchildthemeordner
    Hast Du z. B. die single.php geändert, schiebst Du die geänderte Kopie per FTP in diesen Ordner, da sie ja auch im Parent-Theme an dieser Stelle liegt.
    Änderst Du Dateien aus Unterordnern des Parent-Themes, müssen die geänderte Kopie im gleichen Unterordner des Child-Theme zu finden sein.
     
  3. TonyMacarony

    TonyMacarony Well-Known Member

    Registriert seit:
    15. November 2016
    Beiträge:
    99
    Zustimmungen:
    0
    So hatte ich es mir auch vorgestellt. Wenn ich jedoch einen Unterordner wie im Parent-Theme erstelle und dort die geänderte Datei einfüge, passiert gar nichts.
     
  4. son10

    son10 Well-Known Member

    Registriert seit:
    30. April 2010
    Beiträge:
    310
    Zustimmungen:
    1
    Ich frag mal ganz vorsichtig: Child-Theme ist unter Design-->Themes aktiviert?
     
  5. helix

    helix Well-Known Member

    Registriert seit:
    28. Juli 2011
    Beiträge:
    1.808
    Zustimmungen:
    27
    Woher soll deine Installation wissen, dass sie auf eine Datei im Unterordner des Child-Themes zugreifen soll? Es muss auch die Datei im Child-Theme-Ordner vorhanden sein, in der die Datei im Unterverzeichnis referenziert ist (auch ein geänderter Pfad ist eine Änderung).

    Gruß
    helix
     
  6. TonyMacarony

    TonyMacarony Well-Known Member

    Registriert seit:
    15. November 2016
    Beiträge:
    99
    Zustimmungen:
    0
    Ja klar. Läuft ja bereits, nur werden die Unterordner irgendwie nicht einbezogen.
     
  7. TonyMacarony

    TonyMacarony Well-Known Member

    Registriert seit:
    15. November 2016
    Beiträge:
    99
    Zustimmungen:
    0
    Verstehe ich nicht so ganz. Bin noch Neuling in Sachen WordPress und PHP. Kannst du das bitte mal genauer erklären?
     
  8. helix

    helix Well-Known Member

    Registriert seit:
    28. Juli 2011
    Beiträge:
    1.808
    Zustimmungen:
    27
    Ein ganz schlichtes WordPress-Theme besteht aus fünf Dateien: header.php, index.php, footer.php, functions.php und style.css, die alle in einem Ordner mit dem Namen des Themes liegen. Ohne Unterordner.
    Du kannst in diesen Template-Dateien soviele Sub-Dateien referenzieren, wie du möchtest, z.B. über get_template_part(). Solche Sub-Dateien können aus Gründen der Übersichtlichkeit gerne in Unterordner gepackt werden. Dort, wo die Datei referenziert ist, muss dann natürlich der entsprechende Pfad angegeben sein.

    Wenn du nun beispielsweise die Datei im Unterordner angepasst hast – und sie deswegen im entsprechenden Unterordner des Child-Themes liegt, die Datei, in der die Sub-Datei referenziert ist, liegt aber nur im Parent-Theme … – dann findet WordPress natürlich nur die Sub-Datei im Unterordner des Parent-Themes, dafür ist ja der Pfad angegeben.
    Du musst also gucken: in welcher Template-Datei ist die Sub-Datei referenziert? => Eine Kopie dieser (Parent-) Template-Datei in den Child-Theme-Ordner. Und gucken, wie ist die Sub-Datei referenziert? Funktioniert das dann als dynamischer / relativer Pfad auch im Child-Theme? Oder ist ein absoluter Pfad angegeben, der auch noch entsprechend angepasst werden muss?

    Gruß
    helix
     
  9. TonyMacarony

    TonyMacarony Well-Known Member

    Registriert seit:
    15. November 2016
    Beiträge:
    99
    Zustimmungen:
    0
    In der functions.php sind die entsprechenden Verweise auf die beiden Dateien. Jetzt hab ich aber im Child-Theme bereits eine functions.php. Muss ich jetzt den kompletten Code aus der Originaldatei hinter den aus der functions.php im Child-Theme kopieren? Wenn ja, müssen dort dann alle Verweise auf sämtliche php-Dateien als absoluter Pfad angegeben werden?
     
  10. TonyMacarony

    TonyMacarony Well-Known Member

    Registriert seit:
    15. November 2016
    Beiträge:
    99
    Zustimmungen:
    0
    Habs jetzt erstmal so ausprobiert, aber wenn ich absolute Pfade angebe funktioniert es nicht. Bekomme dann nur eine weiße Seite angezeigt.
     
  11. TonyMacarony

    TonyMacarony Well-Known Member

    Registriert seit:
    15. November 2016
    Beiträge:
    99
    Zustimmungen:
    0
    Hmm... hat niemand eine Idee?
     
  12. helix

    helix Well-Known Member

    Registriert seit:
    28. Juli 2011
    Beiträge:
    1.808
    Zustimmungen:
    27
    Nein, nicht den kompletten Code der parent-functions.php in die child-functions.php kopieren. Die functions.php des Child-Themes ergänzt die functions.php des parent-Themes.

    Kannst du bitte mal die Zeilen aus der functions.php des Parent-Themes posten, in denen die Datei(en) referenziert sind?

    Gruß
    helix
     
  13. TonyMacarony

    TonyMacarony Well-Known Member

    Registriert seit:
    15. November 2016
    Beiträge:
    99
    Zustimmungen:
    0
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Weiß nicht ob das schon reicht.
     
  14. helix

    helix Well-Known Member

    Registriert seit:
    28. Juli 2011
    Beiträge:
    1.808
    Zustimmungen:
    27
    Okay, es geht also um Theme-Funktionen.

    Probiere mal zuerst, ob du die Funktion aus dem Parent-Theme direkt in der functions.php des Child-Themes überschreiben kannst.
    Das sollte funktionieren, wenn die Funktion im Parent-Theme korrekt mit if ( ! function_exists( 'name-der-theme-funktion' ) ) eingebunden ist. Hintergrund: die functions.php des Child-Themes wird zuerst geladen. Wenn nun die Funktion (aus dem Child-Theme) schon existiert, wird sie aus dem Parent-Theme nicht mehr gezogen.

    Wenn das funktioniert, kannst du schauen, ob du die geänderte Funktion wieder in eine eigene Datei auslagern willst.
    Dazu brauchst du nicht unbedingt den ganzen Verzeichnispfad nachzubilden. Du könntest die (ausgelagerte) Datei auch direkt ins Child-Theme-Verzeichnis legen oder z.B. einen Unterordner für ausgelagerte Funktionen anlegen (also z.B. alle diese Dateien in einen Ordner „inc“).
    Verwende für die Angabe des Pfades statt get_template_directory() den Aufruf get_stylesheet_directory()

    Siehe https://codex.wordpress.org/Child_Themes

    Gruß
    helix
     
  15. TonyMacarony

    TonyMacarony Well-Known Member

    Registriert seit:
    15. November 2016
    Beiträge:
    99
    Zustimmungen:
    0
    Bin mir nicht sicher, ob ich es richtig gemacht habe. Hier der Code...

    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Jetzt kommt zwar keine weiße Seite mehr, aber irgendwie gibt es immer noch keine Änderung. Wie gesagt, mit php kenn ich mich nicht wirklich aus! :roll:
     
  16. helix

    helix Well-Known Member

    Registriert seit:
    28. Juli 2011
    Beiträge:
    1.808
    Zustimmungen:
    27
    Hm, ich bin nicht wirklich der Experte in Child-Themes angeht.
    Aber kannst du vielleicht einfach mal schreiben, was du eigentlich ändern wolltest?

    Gruß
    helix
     
  17. TonyMacarony

    TonyMacarony Well-Known Member

    Registriert seit:
    15. November 2016
    Beiträge:
    99
    Zustimmungen:
    0
    Es geht hauptsächlich darum, dass ich an verschiedenen Stellen meiner Seite Widgets plazieren möchte, um diese dann über den Backend-Bereich schnell austauschen zu können. In der register-widgets.php habe ich dafür verschiedene Sidebars erstellt.
     
  18. helix

    helix Well-Known Member

    Registriert seit:
    28. Juli 2011
    Beiträge:
    1.808
    Zustimmungen:
    27
    In der register-widgets.php im Parent-Theme ist die Funktion ohne das if ( ! function_exists() ) eingebunden, also kannst du die Funktion nicht einfach überschreiben.
    Also gibst du deiner widget-Anmelde-Funktion einen eigenen Namen, z.B. function pixgraphy_child_widgets_init() und schreibst dort deine eigenen (ergänzenden) Widgets rein. Das machst du zuerst einmal einfach in der functions.php des Child-Themes.
    Ich mache das immer so, dass ich der aktuellen Datei, in dem Fall functions.php einen Unterstrich vor den Dateinamen voranstelle – auf dem Server, also über FTP – und dann die erneuerte Datei hochlade. Wenn ich dann einen Fehler kriege, habe ich blitzschnell wieder zur alten Version zurückgeswitched.
    Wenn ich die Logik richtig verstehe, werden dann sowohl die pixgraphy-Widgets (aus dem Parent-Theme) als auch deine eigenen aus dem Child-Theme geladen.
    => Im Admin-Bereich unter Design -> Widgets nachschauen, ob alle angemeldeten Widget-Bereiche angezeigt werden.

    Wenn das so funktioniert, kannst du dir überlegen, ob du deine Widget-Funktion in eine eigene Datei auslagern willst oder ob du sie nicht doch in deiner Child-functions.php ganz gut aufgehoben findest.
    Wenn nicht, müssen wir weitersehen.
    Und im Theme einbinden kannst du die weiteren Widget-Bereiche ja dann, wo du willst, immer über if ( is_active_sidebar() )

    Gruß
    helix
     
  19. TonyMacarony

    TonyMacarony Well-Known Member

    Registriert seit:
    15. November 2016
    Beiträge:
    99
    Zustimmungen:
    0
    So funktioniert es endlich! Im Prinzip eigentlich ganz simpel.

    Vielen Dank helix!
     
  20. helix

    helix Well-Known Member

    Registriert seit:
    28. Juli 2011
    Beiträge:
    1.808
    Zustimmungen:
    27
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden