Seitenabhängige Sidebars im Child-Theme

  • Hallo,

    ich habe hier mal ein bisschen quer gelesen, um in einem Twentyfourteen-Childtheme seitenabhängig verschiedene Sidebars aufzurufen. Die entsprechenden Templates sind kopiert und werden in der functions.php wie folgt eingebunden:

    Grundsätzlich läuft das auch, wie gewünscht. Nur wie bringe ich meinem Child-Theme bei, die zusätzlichen Sidebars in der eigenen functions.php zu betreiben, dass bei Updates des Haupt-Themes die Sidebars nicht verschwinden?
    Ich habe da gerade einen Knoten im Kopf, wie rufe ich eine Child-functions.php auf? - Welche Codesegmente muss ich kopieren? Immerhin habe ich verstanden, dass nicht zwei function.php mit gleichen Aufrufen vorhanden sein dürfen, oder doch?
    Kann mir da Jemand auf die Sprünge helfen? :-)

    • 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

  • Hallo

    erstelle einfach eine Datei mit Namen "functions.php" im CHildtheme-Ordner!
    Diese muss mit

    PHP
    <?php


    beginnen, und mit

    PHP
    ?>


    enden.
    Dazwischen schreibst du einfach all deine Funktionen die du benötigst.
    WICHTIG: im Gegensatz du den anderen Dateien im Childtheme ersetzt die functions.php des Childthemes NICHT die functions.php des Parentthemes, sondern beide verhalten sich additiv! Dadurch kannst du deine Funktionen bei einem Update behalten wärend die themeeigenen Funktionen beim Uodate geändert werden können.

    LG, pixselig

    PS: dadurch das sich die functions.php's additiv verhalten verwende keine Funktionsbezeichnungen welche in der functions.php des Parentthemes vorkommen um Fehler zu vermeiden!

  • Vielen Dank für die Info! :-)

    Wenn ich das Codepäckchen aus meinem ersten Beitrag oben in die Child-functions.php packe und in der original functions.php lösche, funktioniert das Ganze.
    Nach einem Update des originalen Twentyfourteen läuft natürlich gar nichts mehr, weil die Funktion

    Code
    function twentyfourteen_widgets_init()


    zwei Mal aufgerufen wird.
    Es scheint auch nicht zu funktionieren, in der Child-functions.php nur die zusätzlichen Sidebars definieren zu wollen.
    Kann ich die Sidebar-Registrierungen in diesem Fall überhaupt auf die zwei function.php verteilen?
    Dabei produziere ich nur weiße Browserfenster.
    Brauche ich für die Sidebar-Registrierungen in der Chilp-functions.php einen anderen Aufruf?

  • Klar kannst du das aufteilen!

    Du musst nur die Funktion umbenennen, zBsp. in

    Code
    function twentyfourteen_child_widgets_init()


    dann musst du natürlich noch den Funktionsaufruf anpassen ("add_action") und fertig.

    LG, pixselig

  • [quote='pixselig','RE: Seitenabhängige Sidebars im Child-Theme']Hallo

    , und mit

    PHP
    ?>

    nein eine functions.php braucht kein

    PHP
    ?>


    am Ende

    wie auch sonst nirgendwo in WP ....

  • Danke Monika, du hast natürlich recht!

    Es ist unüblich die PHP-Anweisung in der functions.php zu beenden, allerdings kann man das schon machen - dem Parser scheints egal zu sein.

    LG

  • Danke Monika, du hast natürlich recht!

    Es ist unüblich die PHP-Anweisung in der functions.php zu beenden, allerdings kann man das schon machen - dem Parser scheints egal zu sein.

    LG


    ja dem Parser ist es meist egal :-)
    aber selten Laien, weil sie oftmals dann Leerzeichen nach dem ... schaffen und dann hagelts Fehler :-)

  • Danke für die schnelle Hilfe.
    Nun ist die original functions.php im Twentyfourteen wieder aktiv.
    Im Child sieht sie nun so aus:


    Das führt zu einem weißen Browserfenster, es sei denn, ich ändere den add_action-Aufruf in

    Code
    add_action( 'twentyfourteen_child_widgets_init' );


    Dann funktioniert die Seite mit Ausnahme der neuen Sidebars. :-(

    Gar nicht so einfach, oder doch?

  • Die API / den Hook "widgets_init" benötigst du aber zwingend!
    Dafür benötigst du die "widgets.php" nicht zweimal und auch das Ephemera Widget muss nicht zweimal registriert werden - das führt auch vermutlich zu dem Fehler.
    Also probier mal das

    LG, pixselig

  • Zu früh gefreut!
    Grundsätzlich funktioniert im Frontend alles.
    Aber ich darf nicht mehr ins Backend! :-)
    Bei Twentyfourteen bekomme ich eine weiße Seite.
    Ein Test bei Twentytwelve zeigt zwar das Login, allerdings geht eine Anmeldung nicht.
    Erst wenn ich die functions.php im Child umbenenne, ist ein Zugang bei beiden Seiten möglich...

  • Der Fehler lag zwischen den Ohren, bzw. das Lesen der Log-Datei brachte mich weiter. Dort fand ich den php Fehler
    "cannot-modify-header-information-headers-already-sent"
    Das erste Zeichen in meiner functions.php war ein Leerzeichen. :-)

    Dummheit gehört halt bestraft...

Jetzt mitmachen!

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