WordPress模板中主菜单的主题位置是在哪里定义的?

时间:2014-01-18 作者:AndreaNobili

我是WordPress的新手(我来自Joomla),我对Theme Location 主菜单的。

例如,使用预安装的Twenty Twelve 主题,如果在后端我进入:Appearance ---> Menus ---> Manage Location 我可以分配main-menu 仅针对特定theme location 已命名Primary Menu.

我认为这个地区header.php 的文件Twenty Twelve 主题(因为我的主菜单显示在页面标题中),但我找不到它,这是header.php 内容:

<?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">
这个在哪里Primary Menu 或者在主题中是如何定义的?

Tnx公司

安德烈

2 个回复
最合适的回答,由SO网友:Steve 整理而成

菜单位置在函数中定义。php

你可以阅读the codex 有关如何在函数中定义菜单位置的详细信息。php

Register Menus

首先,在你的主题功能上。php,您需要编写一个函数来注册菜单的名称。(这是它们在外观->菜单管理屏幕中的显示方式。)例如,此菜单将作为“标题菜单”出现在“主题位置”框中。

function register_my_menu() {
  register_nav_menu(\'header-menu\',__( \'Header Menu\' ));
}
add_action( \'init\', \'register_my_menu\' );
这将显示两个菜单选项,标题菜单和额外菜单-

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

Display Menus on Theme

一旦你做到了这一点,你的主题就差不多准备好了。最后一个准备步骤是告诉主题您希望菜单显示在哪里。您可以在相关的主题文件中执行此操作。例如,我们可能希望标题菜单位于标题中。php。因此,在主题编辑器中打开该文件,然后决定要将菜单放在哪里。这里使用的代码是wp\\u nav\\u menu,我们需要为每个菜单位置使用一次。因此,添加此代码-

<?php wp_nav_menu( array( \'theme_location\' => \'header-menu\' ) ); ?>
您只需确保theme\\u位置指向您在函数中为菜单提供的名称。上面的php代码。(请注意,此处使用的是标题菜单,而不是没有连字符的标题菜单。标题菜单是代码理解的名称,标题菜单是您在管理页面中看到的人类可读版本。)

要完成代码,您可以将额外的菜单放在其他地方。例如,您可能希望在其中一个页面上有一个菜单,甚至可能希望在其中添加一个特定类的包含DIV-

wp_nav_menu( array( \'theme_location\' => \'extra-menu\', \'container_class\' => \'my_extra_menu_class\' ) );
因此,您可以将上述内容放入页面模板中,菜单不仅会显示在您放置的任何位置,而且会被样式化为my\\u extra\\u menu\\u类,以便您可以在CSS中使用它。

SO网友:Brad Dalton

您还可以从子函数中引入一个额外的菜单。php文件,无需修改任何父主题文件。

add_action( \'wp_head\', \'add_extra_nav\' ); 

function add_extra_nav() {

wp_nav_menu( array( 

\'theme_location\' => \'extra-menu\', 

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

}
只需将容器类更改为与主题使用的容器类相同,并将函数包装在主题用于主菜单或次菜单的现有类中,这样就不需要添加任何CSS。您通常可以在标题中找到它。php。

将wp\\u head挂钩更改为任何其他WordPress或主题特定挂钩。

结束

相关推荐

TinyMCE:将css添加到格式下拉菜单

我使用add\\u editor\\u style()成功地添加了一个TinyMCE样式表,以便在TinyMCE编辑器的主体中预览样式。然而,我是否正确地假设add\\u editor\\u style()函数只能访问编辑器主体的样式?如果是这样,是否还有其他方法或函数可用于访问TinyMCE格式下拉列表的样式?