Beim wp-bootstrap-starter-Theme wp_bootstrap_navwalker.php im child-theme überschreiben

  • Ich verwende wp-bootstrap-starter (aktuelle Version von WP+theme) und würde gerne die wp_bootstrap_navwalker.php im Child-Theme anpassen.
    Ich habe versucht, die Datei im Child-Theme im inc-Ordner anzupassen. Änderung wird aber nicht übernommen.
    Ich habe versucht, die Datei via functions.php zu integrieren.

    [FONT=Courier New]/**
    * Register Custom Navigation Walker
    */
    function register_navwalker(){
    require_once get_stylesheet_directory() . '/inc/wp_bootstrap_navwalker.php';
    }
    add_action( 'after_setup_theme', 'register_navwalker' );

    [FONT=Arial]Interessiert auch nicht.[/FONT][/FONT]
    [FONT=Courier New][FONT=Arial]Konkret geht es darum, dass ich die Menüpunkte auf oberer Ebene als Links haben möchte.
    Dazu würde ich gerne Folgendes anpassen:[/FONT]
    [/FONT]

    Dieses hier
    [FONT=Courier New]$atts['href'] = '#';
    $atts['data-toggle'] = 'dropdown';
    $atts['aria-haspopup'] = 'true';
    $atts['aria-expanded'] = 'false';
    $atts['class'] = 'dropdown-toggle nav-link';
    $atts['id'] = 'menu-item-dropdown-' . $item->ID;[/FONT]

    so ändern
    [FONT=Courier New]$atts['href'] = ! empty( $item->url ) ? $item->url : '';
    $atts['aria-haspopup'] = 'true';
    $atts['aria-expanded'] = 'false';
    $atts['class'] = 'dropdown-toggle nav-link';
    $atts['id'] = 'menu-item-dropdown-' . $item->ID;[/FONT]

    Wie mache ich diese Änderungen update-sicher?

    • 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

  • Der o.g. Code lädt die Datei [FONT=Courier New]inc/wp_bootstrap_navwalker.php[/FONT] aus dem Child Theme Ordner.

    • Ist das Child Theme aktiv?
    • Welche Änderungen wurden in der Datei gemacht?
    • Welche Änderungen werden "nicht übernommen"?
    • Link zur Seite wo diese Änderungen zu sehen sein sollten?
    • Ist ein Cache Plugin aktiv?
  • Der o.g. Code lädt die Datei [FONT=Courier New]inc/wp_bootstrap_navwalker.php[/FONT] aus dem Child Theme Ordner.


    Hi [size=14]b3317133,
    Danke für's Mitüberlegen. [/SIZE]

    • Ist das Child Theme aktiv?


    Ja, ist aktiv. Da sind ja die ganzen CSS Änderungen drinnen,.

    • Welche Änderungen wurden in der Datei gemacht?


    Das, was oben aufgeführt wurde bezüglich $atts-Array.

    • Welche Änderungen werden "nicht übernommen"?


    Bei Klick auf Oberlink wird per Default der Unterlink ausgeklappt. Das sollte geändert werden und der Oberlink auf gewünschte Seite führen, also ganz normaler Menüpunkt sein.

    • Link zur Seite wo diese Änderungen zu sehen sein sollten?


    Die Seite wurde in diesem Moment online gestellt.
    So wie es jetzt ist, soll es sein. Ich habe die Änderungen im Mutter-Theme gemacht.
    Da funktioniert es, im Child-Theme funktioniert es nicht.
    Aber das soll natürlich nicht so bleiben.

    • Ist ein Cache Plugin aktiv?


    Nein.

  • Hi b3317133,
    Danke fürs Mitdenken.

    • Ist das Child Theme aktiv?


    Ja, da sind die CSS-Änderungen drinne.

    • Welche Änderungen wurden in der Datei gemacht?


    Wie oben im Code-Block gezeigt, soll das $attr-Array geändert werden, damit Oberlinks richtige Links sind und kein #-Anker

    • Welche Änderungen werden "nicht übernommen"?


    Eben dieses

    • Link zur Seite wo diese Änderungen zu sehen sein sollten?


    https://www.paidosophos.de/
    Wurde eben in der Sekunde produktiv gestellt.
    Da ist es jetzt, wie es sein soll, weil ich o.g. Code in das Mutter-Theme geschrieben habe.
    Da greift es. Bei der Einbindung in function.php und inc-Datei im Child, greift es nicht.
    Soll aber natürlich nicht so bleiben, sondern updatesicher umgesetzt werden.

    • Ist ein Cache Plugin aktiv?


    Nein, noch nicht.

  • Das Menü auf dieser Seite enthält keine [FONT=Courier New]$atts['href'][/FONT] mit [FONT=Courier New]'#'[/FONT], also scheinen Deine Änderungen übernommen zu werden. Um übernommene Änderungen besser sehen zu können, kann man testweise für diese Fälle auch extra eigene CSS Klassen einfügen o.ä.

    Wo genau steht der og. Code "Register Custom Navigation Walker"? Woher kommt er?

    Nach kurzem Einblick steht im Parent Theme bei der [FONT=Courier New]wp_bootstrap_navwalker.php[/FONT] Integration der Pfad zum Parent Theme [FONT=Courier New]get_template_directory()[/FONT] und nicht [FONT=Courier New]get_stylesheet_directory()[/FONT] zum Child Theme und der entspr. Code wird ausserhalb einer [FONT=Courier New]after_setup_theme[/FONT] Action ausgeführt. Hier dürfte das Problem liegen.

  • Das Menü auf dieser Seite enthält keine [FONT=Courier New]$atts['href'][/FONT] mit [FONT=Courier New]'#'[/FONT], also scheinen Deine Änderungen übernommen zu werden. .


    Ich schrieb ja, ich habe den Code gerade ins Mutter-Theme geschrieben und deswegen funktioniert es momentan.
    Meine Änderung in der navwalker-Datei passt also. Ich muss nur noch raus finden, wie ich es richtig ansprechen muss, damit ich es im Child-Theme statt im Mutter-Theme anpassen kann.

    Stimmt, get_stylesheet_directory() hatte ich verwendet, weil die andere Funktion die Datei aus dem Theme statt aus dem Child-Theme einbindet. Mit get_template_directory stand es in dem Beispiel, wo ich den Code her hatte. Aber das hat für mich keinen Sinn gemacht.
    Ich hatte es so verstanden, dass get_stylesheet_directory auf das Child-Theme verweist. So war es auch, wenn ich das als Debug ausgegeben habe. Deswegen dachte ich, es muss so heißen.
    after_setup_theme kam auch aus dem Beispiel. Da muss ich mich dann informieren, welche Alternativen ich habe.

    Ich denke Dir, genau das sind die Punkte wo ich bei WP noch zu wenig durch blicke.

  • Wie man Dinge im Child Theme einbinden kann, kommt immer auf die Art der Einbindung im Parent Theme an. Hier ist es am hilfreichsten, den Code des Parent Themes zu lesen.

    Versuche es in diesem Fall mal ohne die Action einfach mit dieser Zeile am Ende der [FONT=Courier New]functions.php[/FONT] des Child Themes ohne jegliche Änderungen im Parent Theme:

    Code
    require_once(get_stylesheet_directory() . '/inc/wp_bootstrap_navwalker.php');


    Vorausgesetzt, Deine angepasste Datei [FONT=Courier New]wp_bootstrap_navwalker.php[/FONT] existiert im Child Theme an entspr. Stelle...

Jetzt mitmachen!

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