【发布时间】:2011-08-08 16:05:44
【问题描述】:
我刚刚更新了我网站上的一个菜单以使用 wp_nav_menu。使用 WP 进行设置非常简单,但是我遇到了一个小障碍,因为 wordpress 输出其父/祖先类以用于突出显示内容所属的当前页面的方式,尤其是单个帖子页面...
使用.current_page_item a 和.current_page_parent a 突出显示当前页面效果很好,只要它只是在带有孩子的普通页面上,但是当您访问来自事件的帖子或媒体,菜单中的博客链接被高亮显示,这显然是不正确的。
*在查看 Wordpress 的输出时,一个明显的错误是当前页面类甚至没有在帖子所属的正确 li 标签 上生成,该标签似乎是问题。
为了将来参考,事件、媒体和博客页面都使用我编写的特殊查询,仅获取该页面的相应类别,即。
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("category_name=media&paged=$paged");
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="post">
</div>
<?php
endwhile;
else:
endif;
希望有足够的信息,如果没有,请告诉我。 最好的, 某人
编辑 - 2011 年 8 月 3 日
下面是我说 wp_nav_menu 在错误的 li 标签上生成当前类时所指的屏幕截图。蓝色突出显示的是帖子实际所属的菜单项。以灰色突出显示的是 wordpress 决定将当前类添加到的不正确的 li 标签。
http://img688.imageshack.us/img688/4180/picture2zo.png
编辑 - 2011 年 8 月 4 日
也许这将有助于展示我如何在 Hadvig 的帮助下使菜单设置变得更好?
在我的 functions.php 模板中,我有 -
<?php
// Add Custom Menu Support
if ( function_exists( 'register_nav_menu' ) ) {
register_nav_menu( 'epr_menu', 'EPR Main Menu' );
}
function my_menu_items_hook($items, $menu, $args) {
if ( 'epr_menu' == $menu->slug ) { // check if it is process your top menu
if ( is_single() ) { // check if single post loaded
if ( in_category('events') || in_category('media') ) {
foreach ( $items as $key => $value ) {
if ( 'blog' == $value->ID ) {
$items[$key]->classes[] = array(); //unset classes for blog item
}
// add class if post from event category
if ( in_category('events') && 'events' == $value->ID ) {
$items[$key]->classes[] = 'current-menu-item';
}
// add class if post from media category
if ( in_category('media') && 'media' == $value->ID ) {
$items[$key]->classes[] = 'current-menu-item';
}
}
}
}
}
return $items;
}
add_action('wp_get_nav_menu_items', 'my_menu_items_hook', 10, 3);
?>
在我的 header.php 模板中,我这样调用菜单 -
<div id="nav_wrapper">
<ul id="nav">
<?php wp_nav_menu( array( 'container' => '', 'items_wrap' => '%3$s' ) ); ?>
</ul>
</div>
【问题讨论】:
-
您有活动、媒体和博客类别吗?
-
是的,每个页面通过自定义查询显示 1 个类别,与上面显示的完全一样……在设置 > 阅读 > 我将首页设置为事件,并将帖子页面设置为博客。一切都按预期工作,除了 wp_nav_menu 在访问来自媒体或事件的单个帖子时在错误的 li 标签上错误地生成当前类。我将上传来自 firebug 的屏幕截图以说明我的意思并将其放在我的原始帖子中。
标签: wordpress menu navigation singlepage current-page