it-swarm.com.de

Wo ist der Themenort für das Hauptmenü in einer WordPress-Vorlage definiert?

Ich bin ziemlich neu in WordPress (ich kam aus Joomla) und ich habe die folgenden Zweifel im Zusammenhang mit dem Theme Location des Hauptmenüs.

Zum Beispiel mit dem vorinstallierten Thema Twenty Twelve , wenn ich im Backend gehe in: Aussehen ---> Menüs ---> Ort verwalten Ich kann mein Hauptmenü nur zuweisen zu einem bestimmten Themenort benannt Hauptmenü .

Ich denke, dass dieser Bereich in der Datei header.php des Themas Twenty Twelve enthalten ist (da mein Hauptmenü im Seitenkopf angezeigt wird), aber ich kann ihn nicht finden. Dies ist das header.php content:

<?php
/**
 * The Header template for our theme
 *
 * Displays all of the <head> section and everything up till <div id="main">
 *
 * @package WordPress
 * @subpackage Twenty_Twelve
 * @since Twenty Twelve 1.0
 */
?><!DOCTYPE html>
<!--[if IE 7]>
<html class="ie ie7" <?php language_attributes(); ?>>
<![endif]-->
<!--[if IE 8]>
<html class="ie ie8" <?php language_attributes(); ?>>
<![endif]-->
<!--[if !(IE 7) | !(IE 8)  ]><!-->
<html <?php language_attributes(); ?>>
<!--<![endif]-->
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<meta name="viewport" content="width=device-width" />
<title><?php wp_title( '|', true, 'right' ); ?></title>
<link rel="profile" href="http://gmpg.org/xfn/11" />
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
<?php // Loads HTML5 JavaScript file to add support for HTML5 elements in older IE versions. ?>
<!--[if lt IE 9]>
<script src="<?php echo get_template_directory_uri(); ?>/js/html5.js" type="text/javascript"></script>
<![endif]-->
<?php wp_head(); ?>
</head>

<body <?php body_class(); ?>>
<div id="page" class="hfeed site">
    <header id="masthead" class="site-header" role="banner">
        <hgroup>
            <h1 class="site-title"><a href="<?php echo esc_url( home_url( '/' ) ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a></h1>
            <h2 class="site-description"><?php bloginfo( 'description' ); ?></h2>
        </hgroup>

        <nav id="site-navigation" class="main-navigation" role="navigation">
            <h3 class="menu-toggle"><?php _e( 'Menu', 'twentytwelve' ); ?></h3>
            <a class="assistive-text" href="#content" title="<?php esc_attr_e( 'Skip to content', 'twentytwelve' ); ?>"><?php _e( 'Skip to content', 'twentytwelve' ); ?></a>
            <?php wp_nav_menu( array( 'theme_location' => 'primary', 'menu_class' => 'nav-menu' ) ); ?>
        </nav><!-- #site-navigation -->

        <?php if ( get_header_image() ) : ?>
        <a href="<?php echo esc_url( home_url( '/' ) ); ?>"><img src="<?php header_image(); ?>" class="header-image" width="<?php echo get_custom_header()->width; ?>" height="<?php echo get_custom_header()->height; ?>" alt="" /></a>
        <?php endif; ?>
    </header><!-- #masthead -->

    <div id="main" class="wrapper">

Wo ist dieses Hauptmenü oder wie ist es im Thema definiert?

Tnx

Andrea

1
AndreaNobili

Die Menüpositionen sind in functions.php definiert

Sie können den Codex lesen, um weitere Informationen zum Definieren von Menüpositionen in functions.php zu erhalten

Menüs registrieren

Zunächst müssen Sie in die functions.php Ihres Themas eine Funktion schreiben, um die Namen Ihrer Menüs zu registrieren. (So ​​werden sie im Bildschirm "Darstellung -> Menüverwaltung" angezeigt.) Dieses Menü wird beispielsweise im Feld "Themenpositionen" als "Kopfzeilenmenü" angezeigt.

function register_my_menu() {
  register_nav_menu('header-menu',__( 'Header Menu' ));
}
add_action( 'init', 'register_my_menu' );

Und dies würde dazu führen, dass zwei Menüoptionen angezeigt werden, das Kopfzeilenmenü und das Zusatzmenü.

function register_my_menus() {
  register_nav_menus(
    array(
      'header-menu' => __( 'Header Menu' ),
      'extra-menu' => __( 'Extra Menu' )
    )
  );
}
add_action( 'init', 'register_my_menus' );

Menüs zum Thema anzeigen

Sobald Sie das getan haben, ist Ihr Thema fast fertig. Der letzte Vorbereitungsschritt besteht darin, dem Thema mitzuteilen, wo die Menüs angezeigt werden sollen. Sie tun dies in der entsprechenden Designdatei. So möchten wir beispielsweise, dass sich unser Header-Menü in der Datei header.php befindet. Öffnen Sie diese Datei im Themeneditor und legen Sie fest, wo Sie Ihr Menü ablegen möchten. Der hier zu verwendende Code ist wp_nav_menu und wird für jeden Menüpunkt einmal benötigt. Also, füge diesen Code hinzu -

<?php wp_nav_menu( array( 'theme_location' => 'header-menu' ) ); ?>

Sie müssen lediglich sicherstellen, dass theme_location auf den Namen verweist, den Sie für Ihr Menü in der Datei functions.php angegeben haben. (Beachten Sie, dass hier das Header-Menü und nicht das Header-Menü ohne Bindestrich verwendet wird. Header-Menü ist der Name, den der Code versteht. Header-Menü ist die lesbare Version, die Sie auf der Admin-Seite sehen.)

Um den Code zu vervollständigen, können Sie Ihr zusätzliches Menü an einer anderen Stelle ablegen. Vielleicht möchten Sie ein Menü auf einer Ihrer Seiten haben, und vielleicht möchten Sie sogar, dass es ein wenig mit einem DIV einer bestimmten Klasse aufgepeppt wird -

wp_nav_menu( array( 'theme_location' => 'extra-menu', 'container_class' => 'my_extra_menu_class' ) );

Sie würden das Obige also in Ihre Seitenvorlage einfügen, und das Menü würde nicht nur dort angezeigt, wo Sie es abgelegt haben, es würde auch als my_extra_menu_class formatiert, sodass Sie damit in CSS arbeiten können.

7
Steve

Sie können auch ein zusätzliches Menü aus Ihrer untergeordneten Datei functions.php einbinden, ohne die übergeordneten Themendateien zu ändern.

add_action( 'wp_head', 'add_extra_nav' ); 

function add_extra_nav() {

wp_nav_menu( array( 

'theme_location' => 'extra-menu', 

'container_class' => 'nav-menu' ) );

}

Ändern Sie einfach die Containerklasse in die von Ihrem Thema verwendete und binden Sie die Funktion in eine vorhandene Klasse ein, die Ihr Thema für ein primäres oder sekundäres Menü verwendet, sodass Sie kein CSS hinzufügen müssen. Normalerweise finden Sie dies in der header.php.

Ändern Sie den wp_head-Hook in einen anderen WordPress- oder themenspezifischen Hook.

0
Brad Dalton