首先,我不是开发人员,我只是在自学。我对php和javascript还没有深入的了解。
我正在开发自己的 WordPress 网站作为测试对象和学习场所。我在我的自定义子主题中使用了 twitter bootstrap,它有一个名为 320Press WP-Bootstrap 的父主题。我在这方面没有问题。只在它的php方面。
我现在面临关于顶部导航栏菜单的问题。我无法为我想要的菜单项触发 .active 类。
菜单是使用添加菜单小部件从管理面板创建的。菜单的父项称为 BLOG,其子项是 BLOG 的类别。基本上,博客菜单是我的顶部导航栏菜单的子项。我的顶部导航栏菜单包含主页、博客和信息菜单。点击 BLOG 菜单将触发主题的下拉菜单功能,并显示可用的博客类别。我已经将我的永久链接设置设置为这样的自定义结构, http: //mysite.com//blog/%postname%/
我创建了一个静态页面并将其设置为我的主页,活动类正在处理该 url,即我的根域。我的主题的 function.php 通过定位当前菜单项类在其上添加一个 .active 类。但是当我导航到我的博客部分(也是一个自定义页面)时,活动类不会添加到导航菜单“博客”中。菜单“博客”是通过管理员菜单小部件添加的。
一位用户建议在服务器端解决这个问题,所以我认为他的意思是添加一些 php 代码。
但是我还没有那个技能。但是 wordpress 提供了 codex,我可能只需要复制粘贴一些代码并对其进行调整。但为了调整它,我仍然需要一些 php 技能。我在网上搜索了一些类似的问题并找到了一些可行的解决方案,但我不知道如何实施它来解决我的具体问题。
我在这里发现了一些类似的问题:
但我对如何实现它一无所知。
我也从 wordpress 论坛找到了这个,我用我的值替换了这些值,但它不起作用。
这是我的 WordPress 导航菜单的外观:
<div class="nav-collapse collapse">
<ul class="nav">
<li class="cateogry-1">Home</a></li>
<li class="this-shall-become-active"><a data-toggle="dropdown" class="dropdown-toggle" title="blog">Blog<b class="caret"></b></a>
<ul class="dropdown-menu">
<li class="category-1"><a href="../blog/cat1">Blog Category 1</a></li>
<li class="category-2"><a href="../blog/cat2">Blog Category 2</a></li>
</ul>
</li>
<li class="somelink1"><a href="#">Some Link 1</a></li>
<li class="somelink2" ><a href="#">Some Link 2</a></li>
</ul>
</div>
主要目标,当用户浏览 mysite.com/blog 和 /blog 路径下的所有其他页面时,将 .active 类添加到博客菜单的第二<li>
个ul#nav
更新 1
我在导航中找不到任何 current_page_parent 或 current_page_ancestor。
更新 2
从wordpress codex网站阅读,我发现了这个
add_filter( 'wp_nav_menu_objects', 'add_menu_parent_class' );
function add_menu_parent_class( $items ) {
$parents = array();
foreach ( $items as $item ) {
if ( $item->menu_item_parent && $item->menu_item_parent > 0 ) {
$parents[] = $item->menu_item_parent;
}
}
foreach ( $items as $item ) {
if ( in_array( $item->ID, $parents ) ) {
$item->classes[] = 'menu-parent-item';
}
}
return $items;
}
它将类名添加到 parent <li>
,我现在可以进一步定位它并添加 .active 类名。
现在,我需要将 .active 类添加到菜单父项的代码。