在我的网站上,我添加了一个导航菜单,其中包含指向自定义分类法(“用法”)档案的链接。单击此类链接时,将按预期列出所有自定义帖子(«建筑物»)。当前菜单项(分类术语)已突出显示并且正常。
菜单在菜单部分正常创建:
菜单代码如下:
$sub_nav = wp_nav_menu( array(
'start_depth' => 1,
'theme_location' => 'mainMenu',
'menu_class' => '',
'menu_id' => '',
'container' => '',
'items_wrap' => '%3$s',
'walker' => new Uruk_Sub_Menu_Walker()
) );
walker类的代码非常简单:
a
- 元素包装在div
- 元素中以保持2:1的比例 - li
- 元素之后添加换行符。
/**
* Menu-Walker für die Unternavigation
*
* Rechts neben dem Logo listet sich die Unternavigation auf
*
* @since 1.0
*/
class Uruk_Sub_Menu_Walker extends Walker_Nav_Menu {
/**
* Item beginnen
*
* LI-Element für ein Navigationselement beginnen, mit eingemittetem
* A-Element
*
* @since 1.0
*/
function start_el( &$output, $item, $depth, $args ) {
//$class_names = '';
$classes = empty( $item->classes ) ? array() : (array) $item->classes;
$classes[] = 'item-' . $item->ID;
$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item, $args ) );
$class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : '';
$output .= '<li' . $class_names .'>';
// link attributes
$attributes = ! empty( $item->attr_title ) ? ' title="' . esc_attr( $item->attr_title ) .'"' : '';
$attributes .= ! empty( $item->target ) ? ' target="' . esc_attr( $item->target ) .'"' : '';
$attributes .= ! empty( $item->xfn ) ? ' rel="' . esc_attr( $item->xfn ) .'"' : '';
$attributes .= ! empty( $item->url ) ? ' href="' . esc_attr( $item->url ) .'"' : '';
$output .= '<div class="sub-nav-item-ratio"></div>';
$output .= sprintf( '%1$s<a%2$s>%3$s%4$s%5$s</a>%6$s',
$args->before,
$attributes,
'<div class="link-text-height"></div><div class="link-text-wrapper">',
apply_filters( 'the_title', $item->title, $item->ID ),
'</div>',
$args->after
);
}
/**
* Ende eines LI-Elements
*
* Diesmal ohne Newline
*/
function end_el( &$output, $item, $depth = 0, $args = array() ) {
$output .= '</li>';
}
/**
* Flache Struktur
*
* Wenn eine weitere Hierarchieebene beginnt, diese nicht mit einer weiteren UL verschachteln
*/
function start_lvl( &$output, $depth = 0, $args = array() ) { }
function end_lvl( &$output, $depth = 0, $args = array() ) { }
}
home- / news- / blog-page的设置如下:
“新闻”页面是没有任何内容的普通页面。
现在,当我想查看列出的自定义帖子类型的详细信息时,我丢失了菜单项,并切换到默认的博客菜单。
我能做什么:
wp_update_nav_menu_object()
),但是这会产生一个巨大的菜单,当选择一个单独的建筑时,会突出显示几个菜单项,这是不可取的。那么,如何在查看单个建筑物时保留当前菜单项?一旦我保持菜单,我一定能够突出显示所请求的菜单。
我知道,这还不是一个与代码相关的精确问题,但我不知道从哪里开始。
答案 0 :(得分:0)
问题在于,您的单个自定义帖子(单个建筑物)的固定链接与分类存档的永久链接无关,因此wp_nav_menu无法知道单个构建页面与该菜单项相关。
我建议采用以下方法:
1)在您的分类档案的模板中,为每个单柱链接添加一个自定义查询参数,例如?customtax =分类法蛞蝓。
2)使用此特殊参数的存在使您的模板使用自定义Walker而不是默认的博客菜单
3)在你的自定义Walker中,如果存在这个特殊参数,则给出与该分类相对应的菜单项“current_page_item”。