如何动态导航菜单以及如何调用所有 class
How to dynamic nav menu and how to call all class
我在函数中注册了菜单。在输出中,我用主题位置、菜单 ID、菜单 class 调用 wp_nav_menu,但我无法调用 li 和 class。我如何调用 li 和 a class
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#ftco-nav" aria-controls="ftco-nav" aria-expanded="false" aria-label="Toggle navigation">
<span class="fa fa-bars"></span> Menu
</button>
<div class="collapse navbar-collapse" id="ftco-nav">
<ul class="navbar-nav mr-auto">
<li class="nav-item active"><a href="index.html" class="nav-link">Home</a></li>
<li class="nav-item"><a href="about.html" class="nav-link">About</a></li>
<li class="nav-item"><a href="services.html" class="nav-link">Services</a></li>
<li class="nav-item"><a href="project.html" class="nav-link">Project</a></li>
<li class="nav-item"><a href="blog.html" class="nav-link">Blog</a></li>
<li class="nav-item"><a href="contact.html" class="nav-link">Contact</a></li>
</ul>
</div>
</div>
</nav>
如果您想将 classes 添加到您的菜单项,您可以在后端的设计 -> 菜单 -> 右上角切换 "screen options" -> [=35] 下执行此操作=] "css classes"。之后,您可以将 classes 添加到您的菜单项中。
也许你想改变菜单的完整输出,你可以使用wp_get_nav_menu_items函数。你给它 id(将鼠标悬停在 "delete menu" link 上,它会在 url 中显示 id),然后你会得到菜单项:
<?php
$menuID = '12'; // ID of your menu
$primaryNav = wp_get_nav_menu_items($menuID); // get your menu items
?>
现在您可以使用菜单中的所有项目,并且可以使用 foreach 并使用您的个人标记输出所有项目。
<ul id="ftco-nav">
<?php
foreach( $primaryNav as $item ) {
$link = $item->url; // get the url of item
$title = $item->title; // get title of item
?>
<li class="item"><a href="<?php echo $link; ?>"><?php echo $title; ?></a></li>
<?php } ?>
</ul>
您可以为 ul 和 li 提供您喜欢的所有 classes,并且仍然拥有菜单中的所有项目。
也许您想提供 "active" class,以便在查看页面时活动菜单项具有不同的样式。为此,您可以获得当前 url 并检查它是否与菜单项的 link 相同。如果是,则设置活动 class。所以你的代码看起来像这样:
<ul id="ftco-nav">
<?php
foreach( $primaryNav as $item ) {
$link = $item->url; // get the url of item
$title = $item->title; // get title of item
$active_page = false;
$current_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
if ($link == $current_url) { $active_page = true; }
?>
<li class="item <?php if ($active_page == true) { echo 'active'; } ?>"><a href="<?php echo $link; ?>"><?php echo $title; ?></a></li>
<?php } ?>
</ul>
这样您就可以完全个性化您的菜单,而无需使用自定义 walker 或过滤器。希望这有帮助。
我在函数中注册了菜单。在输出中,我用主题位置、菜单 ID、菜单 class 调用 wp_nav_menu,但我无法调用 li 和 class。我如何调用 li 和 a class
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#ftco-nav" aria-controls="ftco-nav" aria-expanded="false" aria-label="Toggle navigation">
<span class="fa fa-bars"></span> Menu
</button>
<div class="collapse navbar-collapse" id="ftco-nav">
<ul class="navbar-nav mr-auto">
<li class="nav-item active"><a href="index.html" class="nav-link">Home</a></li>
<li class="nav-item"><a href="about.html" class="nav-link">About</a></li>
<li class="nav-item"><a href="services.html" class="nav-link">Services</a></li>
<li class="nav-item"><a href="project.html" class="nav-link">Project</a></li>
<li class="nav-item"><a href="blog.html" class="nav-link">Blog</a></li>
<li class="nav-item"><a href="contact.html" class="nav-link">Contact</a></li>
</ul>
</div>
</div>
</nav>
如果您想将 classes 添加到您的菜单项,您可以在后端的设计 -> 菜单 -> 右上角切换 "screen options" -> [=35] 下执行此操作=] "css classes"。之后,您可以将 classes 添加到您的菜单项中。
也许你想改变菜单的完整输出,你可以使用wp_get_nav_menu_items函数。你给它 id(将鼠标悬停在 "delete menu" link 上,它会在 url 中显示 id),然后你会得到菜单项:
<?php
$menuID = '12'; // ID of your menu
$primaryNav = wp_get_nav_menu_items($menuID); // get your menu items
?>
现在您可以使用菜单中的所有项目,并且可以使用 foreach 并使用您的个人标记输出所有项目。
<ul id="ftco-nav">
<?php
foreach( $primaryNav as $item ) {
$link = $item->url; // get the url of item
$title = $item->title; // get title of item
?>
<li class="item"><a href="<?php echo $link; ?>"><?php echo $title; ?></a></li>
<?php } ?>
</ul>
您可以为 ul 和 li 提供您喜欢的所有 classes,并且仍然拥有菜单中的所有项目。
也许您想提供 "active" class,以便在查看页面时活动菜单项具有不同的样式。为此,您可以获得当前 url 并检查它是否与菜单项的 link 相同。如果是,则设置活动 class。所以你的代码看起来像这样:
<ul id="ftco-nav">
<?php
foreach( $primaryNav as $item ) {
$link = $item->url; // get the url of item
$title = $item->title; // get title of item
$active_page = false;
$current_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
if ($link == $current_url) { $active_page = true; }
?>
<li class="item <?php if ($active_page == true) { echo 'active'; } ?>"><a href="<?php echo $link; ?>"><?php echo $title; ?></a></li>
<?php } ?>
</ul>
这样您就可以完全个性化您的菜单,而无需使用自定义 walker 或过滤器。希望这有帮助。