require in childtheme erzeugt fehler

  • Hallo,
    ich habe ein childtheme erstellt und möchte dort in der functions.php eine Datei einbinden, so wie es im Haupttheme auch gemacht wird. (ich habe in der Datei änderungen vorgenommen, die beim update nicht überschrieben werden sollen)

    Im Haupttheme steht in der functions.php:

    in meinem childtheme habe ich in die functions.php geschrieben:

    PHP
    require( get_stylesheet_directory_uri() . '/core/includes/functions-extentions.php' );

    habe die entsprechende datei hochgeladen, aber es wird immer ein Fehler ausgegeben oder eine weiße Seite.

    Kann mir jemand draufhelfen, was ich falsch mache?
    vielen Dank
    (PS Seit neutestem wird immer eine weiße Seite geliefert, wenn ich die Zeile reinschreibe - früher war es ein fehler, das die datei nicht gefunden würde)

    Einmal editiert, zuletzt von irmen (21. November 2017 um 09:43)

    • 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

  • wenn du mit einem Child Theme arbeitest, nimm get_template_directory_uri()
    siehe Codex: https://codex.wordpress.org/Function_Refer…t_directory_uri

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Du holst hier mit get_stylesheet_directory_uri(); die URL des child-Theme-Directorys.

    Ist dort /core/includes/functions-extentions.php vorhanden?

    Falls nicht:
    get_template_directory_uri()

  • Danke für eure Antworten!
    Ich habe die Datei extra in meinem childtheme drin!
    denn bei einem Update wird doch meine Änderung sonst überschrieben, wenn sie im Haupttheme liegt?
    Oder hab ich da was nicht kapiert?

  • dann versuche es mal mit get_stylesheet_directory()

    [size=10]Bitte immer zuerst die Forensuche nutzen und erst danach Deine Fragen hier im Forum stellen, denn sehr vieles wurde schon mehrfach beantwortet. Bitte dabei auch die Forenregeln beachten.
    Kein Support per PN - Fragen gehören ins Forum.[/SIZE]
    [size=8]Wenn du eine weise Antwort verlangst, musst du vernünftig fragen. (Johann Wolfgang von Goethe)[/SIZE]

  • Um Dateien mit Hilfe eines Child Themes überschreiben zu können, muss das Parent Theme entspr. darauf vorbereitet sein.

    Der o.g. zitierte Code des Parent Themes (Hauptheme) ist nicht darauf vorbereitet.

    Im Haupttheme müsste [FONT=courier new]get_stylesheet_directory()[/FONT] anstelle von [FONT=courier new]get_template_directory()[/FONT] verwendet werden, dann würde WordPress die entspr. Datei im Childtheme falls vorhanden automatisch finden und ohne extra [FONT=courier new]require(..)[/FONT] im Child Theme nutzen (sofern das Parent Theme nicht noch anderen Unsinn macht, der aus dem Codeteil aber nicht ersichtlich ist).

    Die "weisse Seite" kommt daher, dass Funktionen durch den aktuell falschen Ansatz doppelt definiert werden und diese Doppeldefinitionen einen PHP-Fehler verursachen. Das könnte man im entspr. error.log sehen.

    Einmal editiert, zuletzt von b3317133 (21. November 2017 um 12:20)

  • Vielen Dank für deine Antwort!
    es ist aber schon richtig, dass ich das childtheme einsetze, damit die änderungen beim Update nicht überschrieben werden, oder?
    Das heißt sämtliche Änderungen mache ich im Childtheme, oder?
    Das heißt, das locate_template() bzw. get_template_part() wird irgendwo im CHildtheme gesetzt, oder?
    Kann ich nicht in der functions im Childtheme mit remove_die_doppelt_aufgerufene_datei arbeiten?
    vielen Dank für eure Hilfe!

  • es ist aber schon richtig, dass ich das childtheme einsetze, damit die änderungen beim Update nicht überschrieben werden, oder?

    Ja.

    Das heißt sämtliche Änderungen mache ich im Childtheme, oder?

    Ja.

    Das heißt, das locate_template() bzw. get_template_part() wird irgendwo im CHildtheme gesetzt, oder?

    Nein, das müsste im Parent Theme (Haupttheme) verwendet werden.

    Kann ich nicht in der functions im Childtheme mit remove_die_doppelt_aufgerufene_datei arbeiten?

    Nein. Manche Parent Themes umfassen überschreibbare einzelne Funktionen mit einer [FONT=courier new]function_exists()[/FONT] Abfrage, aber da Du einen "weissen Bildschirm" bekommst, ist das offenbar bei den gewünschten Funktionen nicht der Fall.

    Würde vorschlagen, in diesem Fall den Autor des Parent Theme zu kontaktieren und nachzufragen, wie/ob/welche Möglichkeiten es gibt, die gewünschten Funktionen anzupassen. Manchmal gibt es auch sog. Filter, über die man Ausgaben anpassen könnte usw., das kommt aber auf den Einzelfall des Themes an.

  • vielen Dank für die Antworten!! Dann werde ich mal weitersuchen.
    Eigentlich will ich nur, dass die im Theme verbauten socialmedia links in einem _blank aufgehen.
    Die funktion, die die links erzeugt, steht in der [COLOR=#000000][COLOR=#DD0000]functions-extentions.php.[/COLOR][/COLOR]
    Kann ich denn irgendwie mit einem "hook" in diese funktion rein? - so, dass ich das kleine target="_blank" dort rein kriege?


    [COLOR=#000000][COLOR=#DD0000]
    [/COLOR][/COLOR]

  • Im zitierten Code ist das [FONT=courier new]target="_blank"[/FONT] bereits drin.

    Ansonsten würde man das über den im Code aufgeführten Filter [FONT=courier new]responsive_social_skin[/FONT] in der Datei [FONT=courier new]functions.php[/FONT] des Child Theme ergänzen können, z.B. so ähnlich (ungetestet):

    Code
    function b3317133_responsive_social_skin( $html ) {
        $html = str_replace(
            'a href="',
            'a target="_blank" href="',
            $html
        );
        return $html;
    }
    add_filter( 'responsive_social_skin', 'b3317133_responsive_social_skin' );
  • Vielen Dank!!
    Hast du zufällig einen link, wo ich mir das mit den Filtern (und den hooks und den funtkionen) im Allgemeinen auf deutsch genauer anschauen kann?
    (Ich kann es natürlich selber googeln, aber es gibt ja viele Treffer - von denen manche nicht so toll erklären, es würde mir sehr helfen, falls jemand einen wirklich guten Link weiß.)
    Also falls jemand was weiß, wärs toll!
    Danke für eure Antworten!
    Irmen

    Einmal editiert, zuletzt von irmen (22. November 2017 um 09:28)

Jetzt mitmachen!

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