导航菜单-基于元键添加类

时间:2012-05-03 作者:INT

我试图找到一种方法,根据页面中元键的值来更改不同导航菜单项的类。

当前菜单如下所示:

<li class="menu-item-1">Menu item 1</li>
<li class="menu-item-2">Menu item 2</li>
<li class="menu-item-3">Menu item 3</li>
<li class="menu-item-4">Menu item 4</li>
<li class="menu-item-5">Menu item 5</li>
使用自定义键,我想从每个页面中提取单个键,并将它们作为类放入相应的菜单项中,如:

<li class="menu-item-1 pink">Menu item 1</li>
<li class="menu-item-2 yellow">Menu item 2</li>
<li class="menu-item-3 green">Menu item 3</li>
<li class="menu-item-4 pink">Menu item 4</li>
<li class="menu-item-5 bordeaux">Menu item 5</li>
到目前为止,我得到的是:

add_filter(\'nav_menu_css_class\' , \'special_nav_class\' , 10 , 2);
function special_nav_class($classes, $item){
    global $post;
    $colorcode = get_post_meta($post->ID, \'color_dropdown\', true);
    if(is_page()) {
        $classes[] = $colorcode;
    }
    return $classes;
}
它所做的是将元键添加到类中,但仅在访问指定了元键值的页面时,然后将其添加到所有菜单项中,这是不对的。

我无法使用CSS类功能手动返回菜单编辑器。用户将无法访问该区域,在实际页面编辑模式下,用户可以通过metabox下拉菜单设置不同的类,这一点至关重要。

我拉扯头发有一段时间了,但我似乎无法让它工作,这是不可能的吗?

EDIT: UPDATED MY QUESTION

2 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

您的代码没有,因为全局$post 指正在查看的帖子/页面(如果有…)。传递的内容nav_menu_css_class 是一个菜单项-这是一种特殊的帖子类型。其特性包括:object 其中存储:

如果链接引用文章,则为文章类型;如果链接引用分类术语页,则为分类法;如果链接是自定义链接,则为“自定义”,则还存储object_id

如果链接引用一篇文章,则为文章id如果链接引用分类术语页,则为术语id自定义链接的文章id,因此您要做的是检查术语是否实际引用一篇文章(或自定义文章类型),然后传递object_idget_post_meta():

function wpse51076_special_nav_class($classes, $item){
    if( \'post\' == $item->object ){
            $colorcode = get_post_meta($item->object_id, \'color_dropdown\', true);
           $classes[] = $colorcode;
    }
    return $classes;
}
add_filter(\'nav_menu_css_class\' , \'wpse51076_special_nav_class\' , 10 , 2);

SO网友:janw

试试这个,不要测试
我更换了$post->ID 具有$item->ID, 应该有用。

add_filter(\'nav_menu_css_class\' , \'special_nav_class\' , 10 , 2);
function special_nav_class($classes, $item){
    global $post;
    $colorcode = get_post_meta($item->ID, \'color_dropdown\', true);
    if(is_page()) {
        $classes[] = $colorcode;
    }
    return $classes;
}

结束

相关推荐

扩展Walker_Page实现条块分隔导航

这个问题是从这个问题开始的:Bar separated navigation by extending Walker_Nav_Menu我也在试着做同样的事情,但这次我在扩展Walker_Page 相反我遇到的问题是,我将深度设置为1,在该深度中可能有4页。但是在walk() 返回的元素数量更多。因为返回的元素数量超过了显示的页面数量,所以我得到了一个条| 菜单末尾添加了太多内容。以下是我目前掌握的代码:<?php $children = get_pages(\'child_of=\'.$po