自定义帖子将帖子类型化为导航菜单中的子菜单

时间:2011-09-18 作者:Naoise Golden

我创建了一个名为“Collections”的自定义帖子类型。我想在导航菜单(不涉及自定义菜单)中有一个菜单项“集合”,链接到index 页面集合自定义帖子类型,并从此菜单项中挂起n 每个子菜单项都链接到一个post.

我做了一些研究,我认为没有关于这个主题的文献。可能涉及一些挂钩(重写wp_nav_menu() 可能)。

我通过声明\'show_in_nav_menus\' => true 在里面register_post_type() 但我不知道如何将单个帖子显示为子菜单。

有什么帮助吗?

注意:使用主题子主题

1 个回复
SO网友:Tom J Nowell

下面是一个修改菜单元素以添加内容的示例。在此示例中,类别项被扩展为具有动态生成的子菜单,其中该菜单项具有一类showposts-X,其中X是要显示的帖子数:

function menu_show_category_posts( $item_output = \'\', $item = \'\', $depth = \'\', $args = \'\' ) {
    global $post;

    $item_output = icit_add_class_attrib( $item_output, \'depth-\' . ( $depth ? $depth : 1 ) );

    if ( $item->type == \'taxonomy\' && $item->object == \'category\' && is_array( $item->classes ) ) {
        $query = false;
        $showposts = 10;
        $preview = 0;
        $new_html = array( );
        $i = 0;

        foreach( $item->classes as $class ) {
            if ( preg_match( \'/^showposts-?(\\d*)/\', $class, $matches ) ) {
                $query = true;
                $showposts = ! empty( $matches[ 1 ] ) && intval( $matches[ 1 ] ) ? intval( $matches[ 1 ] ) : 10;
            }
        }

        if ( $query ) {
            $the_posts = get_posts( array(
                             \'category\' => $item->object_id,
                             \'numberposts\' => $showposts
                            ) );

            if ( ! empty( $the_posts ) ) {
                $new_html[] = \'<ul class="sub-menu">\';

                foreach( ( array ) $the_posts as $post ) {
                    setup_postdata( $post );
                    $new_html[] = \'<li class="">\';
                    $new_html[] = the_title( \'<a href="\' . get_permalink( ) . \'" class="depth-\' . ( $depth ? $depth + 1 : 2 ) . \'">\', \'</a>\', false );
                    $new_html[] = \'</li>\';
                }

                $new_html[] = \'</ul>\';
                $item_output .= implode( "\\n", $new_html );
            }
        }
    }

    return $item_output;
}

add_filter( \'walker_nav_menu_start_el\', \'menu_show_media_post\', 10, 4 );

结束

相关推荐

Menu API not switching menus?

我正在使用菜单API,我想切换到其他菜单,但出于某种原因,它保留了第一个菜单这是我的密码在函数中。php add_action( \'init\', \'register_my_menus\',10 ); function register_my_menus() { register_nav_menu(\'main-navigation\', \'Main Navigation\'); } 下面是我的主题文件(header.ph