Prüfen, ob ein WordPress-Navigationsbereich (wp_nav_menu) ein Menü enthält
Mit der WordPress-Funktion has_nav_menu() könnt ihr überprüfen, ob einem WordPress-Navigationsbereich ein Menü zugewiesen wurde.
In WordPress können über die Funktion wp_nav_menu
Navigationsbereiche registriert und im Template platziert werden. Im Administrationsbereich hat der Administrator anschließend die Möglichkeit die Navigationsbereiche mit Menüs zu bestücken.
Je nach Theme sollte geprüft werden, ob ein Bereich auch eine Navigation enthält. Beispielsweise weil die Navigation auf dem Smartphone hinter einem Button versteckt wird und dieser Button natürlich keinen Sinn macht, wenn gar keine Links vorhanden sind.
WordPress-Navigationsbereich registrieren
Zunächst muss der Navigationsbereich über die functions.php
registriert werden. Der Code dazu sieht z. B. wie folgt aus. Hier wird ein Bereich mit dem Bezeichner nav-header
registriert. Im Backend wird der Name Header
angezeigt.
function kb_register_menus() {
register_nav_menus(
array(
'nav-header' => __( 'Header' ),
)
);
}
add_action( 'init', 'kb_register_menus' );
Prüfen, ob dem Bereich ein Menü zugewiesen wurde – has_nav_menu
Um zu prüfen ob der Navigationsbereich ein Menü enthält, nutzen wir die Funktion has_nav_menu
. Der Aufbau ist simpel – wenn dem Bereich nav-header
ein Menü zugewiesen wurde, wird ein entsprechender Text angezeigt.
<?php
if (has_nav_menu('nav-header')) {
echo 'Menü wurde zugewiesen'; }
?>
In der Praxis wird folgender Aufbau wohl noch etwas häufiger zur Anwendung kommen. Hier wird zusätzlich das Menü selbst angezeigt.
<?php
$theme_location = 'nav-header'; // Bezeichner des Menübereichs
if (has_nav_menu($theme_location)) { // Prüfen ob ein Menü zugewiesen wurde
// Menü ausgeben
wp_nav_menu( array(
'theme_location' => $theme_location,
'container' => ''
));
echo 'Menü wurde zugewiesen'; // Beliebigen weiteren Inhalt ausgeben
}
?>