Wordpress header 菜单自定义

Wordpress header menu customisation

我已经安装了主题,我想自定义header菜单。 新 header 菜单的结构应该是:

<div class="navbar-header">
    <a class="navbar-brand" href="#">
        <img src="img/logo.png">
    </a>
</div>
<nav class="collapse navbar-collapse">
    <ul class="nav navbar-nav navbar-right">
        <li class="">
            <a href="#">
                <i class="fa fa-exclamation"></i>
                         Page1                         
            </a>
        </li>
        <li class="">
            <a href="#">
                <i class="fa fa-exclamation"></i>
                         Page2                         
            </a>
        </li>
                ...

        <!-- Navbar Search -->
        <li class="hidden-xs hidden-sm" id="navbar-search">
            <a href="#">
                <i class="fa fa-search"></i>
            </a>
        </li>
    </ul>
</nav>
<!--/.nav-collapse -->

我是想用WP函数解决的:

<nav class="collapse navbar-collapse">
    <?php if ( has_nav_menu( 'primary-menu' ) ) { ?>
    <?php wp_nav_menu( array( 'theme_location' => 'primary-menu', 'menu_class' => 'menu clearfix', 'container' => '', 'walker' => new mts_menu_walker ) ); ?>
    <?php } else { ?>
        <ul class="menu clearfix">
        <?php wp_list_categories('title_li='); ?>
        </ul>
        <?php } ?>
</nav>

无论如何,结果很差,因为 WP 生成了新的 header 菜单结构并且不再应用样式。

因此我有几个问题:

  1. 如何使用 <i class="fa fa-search"></i> 标签填充 header 菜单元素?

  2. 如何使用 WP 功能包含徽标 <img src="img/logo.png"> 的来源?

  3. 如何将 header manu 元素也包含在 li 标签中?

  4. 或者(而不是 1-3 个问题)how to "translate" regular html above on wordpress html?

How to populate header menu elements with <i class="fa fa-search"></i> tag?

您可以使用 wp_nav_menulink_before 参数在文本 link 之前显示一些内容。所以您的 wp_nav_menu 代码将如下所示:

<nav role="navigation" itemscope itemtype="http://schema.org/SiteNavigationElement" class="collapse navbar-collapse">
    <?php wp_nav_menu(array(
        'container' => '',
        'menu' => __( 'Menu mobile', 'cicr' ),
        'menu_class' => 'menu clearfix',
        'theme_location' => 'primary-menu',
        'before' => '',
        'after' => '',
        'link_before' => '<i class="fa fa-exclamation"></i>',
        'link_after' => '',
        'walker' => new mts_menu_walker
    )); ?>
</nav>

如果你只需要在某些link上添加这个图标,我建议在这个link上添加一个class(在管理中,点击"Screen options"在右上角然后选中 "CSS classes" 以显示 class 输入),然后在 CSS 中添加一个伪元素 link 以显示图标。它看起来像这样:

a.exclamation {
  position: relative;
  display: inline-block;
  padding-left: 15px;
}
a.exclamation:before {
  content: "";
  height: 10px;
  width: 10px;
  top: 0;
  left: 0;
  background: url("images/exclamation.png") left top no-repeat;
  position: absolute;
  left: 0;
  top: 0;
}

How to include source for logo <img src="img/logo.png"> with WP function?

将徽标放在主题文件夹的图像文件夹中,然后使用 get_stylesheet_directory_uri() 函数获取主题文件夹的 URI。

<img src="<?php echo get_stylesheet_directory_uri(); ?>/images/logo.png" />

How to include also as header manu element include in li tag?

考虑到您在谈论搜索导航栏(不确定您的意思),您可以使用 items_wrap wp_nav_menu 参数:

'items_wrap' => '<ul id="%1$s" class="%2$s">'.
                  '%3$s'.
                  '<li class="hidden-xs hidden-sm" id="navbar-search">'.
                     '<a href="#">'.
                       '<i class="fa fa-search"></i>'.
                     '</a>'.
                  '</li>'.
                '</ul>',

看看函数法典参考: https://developer.wordpress.org/reference/functions/wp_nav_menu/

您可以使用 beforeafter 参数在 link 文本之前应用 <i class="fa fa-search"></i>。您还可以使用 link_beforelink_after 参数在 link 之前放置文本。如果您需要包装一些代码,您可以使用 items_wrap 参数将包装器传递给 div 菜单本身。

要带上您上传的 WordPress 徽标(自定义页面上的 header),您应该尝试:

<img src="<?php echo( get_header_image() ); ?>" alt="<?php echo( get_bloginfo( 'title' ) ); ?>" />

您可以使用 container_classmenu_class 自定义 类 并将样式应用于 ulli。默认情况下,WordPress returns 具有类似层次结构的标记代码:div>ul>li>a.

希望对您有所帮助。我提供的 link 包含使用该功能的完整说明。