it-swarm.com.de

Zweite Navigation im Header

Als Anfänger ist es mein Ziel, ein zweites Menü für meine Blog-Seite bereitzustellen (ich habe eine statische Homepage) und ich frage mich, wie ich die zweite Navigation am besten in die Vorlagendateien einfügen kann.

Mit meinen Anfängerfähigkeiten PHP und nach Prüfung der Tutorials scheinen zwei Lösungen für mich zu funktionieren:

A) Füge einen bedingten Tag in den einzigen Hauptcode header.php ein:

<nav id="site-navigation" class="main-navigation" role="navigation">
    <?php wp_nav_menu(array('theme_location' => 'menu-1', 'menu_id' => 'primary-menu')); ?>
</nav><!-- #site-navigation -->

<!-- my Secondary Menu solution one -->
<?php if (is_home()) { ?>
<nav>
    <?php wp_nav_menu(array('theme_location' => 'menu-2', 'menu_id' => 'menu-2')); ?>
</nav>
<?php } ?>

B) Erstelle eine neue Datei, die z.B. header-home.php ist eine Kopie des Hauptcodes header.php und wird in die Blog-Vorlage integriert.

header-home.php:

<nav id="site-navigation" class="main-navigation" role="navigation">
    <?php wp_nav_menu(array('theme_location' => 'menu-1', 'menu_id' => 'primary-menu')); ?>
</nav><!-- #site-navigation -->

<!-- my Secondary Menu Solution 2 -->
<nav>
<?php 
    wp_nav_menu(array('theme_location' => 'menu-2', 'menu_id' => 'menu-2'));
?>
</nav>

Dann müsste ich die Vorlagendatei ändern (in meinem Fall index.php) und mit dieser Bedingung starten:

if( is_home() ) {
    get_header('home'); 

} else {
    get_header();
}

Hier sind meine Fragen:

  1. Gibt es bessere Lösungen, um mein Ziel zu erreichen als die beiden oben genannten?

  2. Wenn nicht, welche der beiden Lösungen würden Sie bevorzugen und warum?

3

Das Beste ist immer subjektiv, ich würde es jedoch folgendermaßen ausdrücken, um eine bessere Kontrolle und eine bessere Anordnung meiner Vorlagen zu haben:

Eine Struktur mit granularer Kontrolle:

Zuerst würde ich einen neuen Ordner erstellen, z. template-parts in meinem Thema und dann in diesem, einem anderen Ordner, z. navigation (um separate Vorlagenteile in verschiedenen Ordnern zu haben).

Dann erstelle ich im Ordner <my-theme>/template-parts/navigation/ drei Dateien, z.

  1. nav.php: Dies fungiert als Hauptvorlagendatei für die Navigation. Es enthält Bedingungen und ein gemeinsames HTML-Wrapper-Markup für beide Menüs.

  2. nav-one.php: Dieser Code enthält das Markup und den CODE für das primäre Navigationsmenü (Menü 1).

  3. nav-two.php: Dieser Code enthält das Markup und den CODE für das sekundäre Navigationsmenü (Menü 2).

Diese Dateien haben folgenden Inhalt:

nav.php file:

<?php if ( has_nav_menu( 'one' ) ) : ?>
    <div class="navigation-one">
        <div class="wrap">
            <?php get_template_part( 'template-parts/navigation/nav', 'one' ); ?>
        </div><!-- .wrap -->
    </div><!-- .navigation-one -->
<?php endif; ?>

<?php if ( has_nav_menu( 'two' ) && is_home() ) : ?>
    <div class="navigation-two">
        <div class="wrap">
            <?php get_template_part( 'template-parts/navigation/nav', 'two' ); ?>
        </div><!-- .wrap -->
    </div><!-- .navigation-two -->
<?php endif; ?>

nav-one.php file:

<nav id="site-navigation" class="main-navigation" role="navigation">
    <?php wp_nav_menu(array('theme_location' => 'one', 'menu_id' => 'menu-one')); ?>
</nav><!-- #site-navigation -->

nav-two.php file:

<nav>
<?php 
    wp_nav_menu(array('theme_location' => 'two', 'menu_id' => 'menu-two'));
?>
</nav><!-- #secondary-navigation -->

Zum Schluss würde ich dies einfach in meine header.php-Datei einfügen:

get_template_part( 'template-parts/navigation/nav' );

Warum?

  1. Sie haben einen einfachen einzeiligen Vorlagenaufruf aus der header.php-Datei und müssen künftige Änderungen nicht zweimal in zwei verschiedenen header.php-Dateien vornehmen, nur um unterschiedliche Menüs zu haben.

  2. Mit nav.php können Sie alle verschiedenen Bedingungen und allgemeinen HTML-Wrapper-Markups für alle verschiedenen Hauptmenüs steuern. Für ein anderes sekundäres Hauptmenü für eine andere Seite müssen Sie die header.php-Datei nicht mehr ändern.

  3. Über nav-one.php, nav-two.php (fügen Sie so viele hinzu, wie Sie benötigen) steuern Sie CODE und Markup nur für dieses Manu. Sie müssen sich nicht um andere Menüs oder deren Markups oder Bedingungen kümmern. Wenn Sie ein neues Menü benötigen, fügen Sie es einfach in z. nav-three.php Datei und fügen Sie dann die erforderlichen Bedingungen in nav.php hinzu, wenn Sie sie im oberen Menü hinzufügen möchten.

  4. Auf diese Weise können Sie dieselbe Datei (Menü) auch an einem anderen Ort verwenden. Sie möchten beispielsweise, dass sich das Navigationsmenü one auch in der Fußzeile befindet. In der Fußzeile müssen Sie dann nur noch Folgendes aufrufen: get_template_part( 'template-parts/navigation/nav', 'one' );

    Das war's, Sie müssen nicht zweimal denselben CODE schreiben.

Sobald Sie dieses Setup haben, haben Sie eine weitaus genauere Kontrolle über Ihr Menüsystem.

Hinweis: Das WordPress-Standarddesign Twenty Seventeen verwendet eine ähnliche Struktur.

2
Fayaz