每个项目具有不同行为的自定义菜单

时间:2012-12-14 作者:MatterGoal

我正在开发一个特别复杂的自定义菜单,我想知道哪种方法是构建它的正确方法。

这是我的菜单结构:

- Home (is a PAGE)

- Information (Is a PAGE with a second level menu)
        |_________Items are the post for the category "information"

- Data (It hasn\'t a PAGE, only a second level menu)
        |_________Items are the posts for the category "data"
在你看来,哪种方法是建立这样一个菜单的最佳方式?是否可以从WP后端构建它,或者只从模板中的代码创建它更好?

1 个回复
SO网友:Tom J Nowell

可以使用后端nav菜单支持,使用类作为标记,然后通过walker_nav_menu_start_el 过滤器(然后进行查询以获取帖子并插入其标记)

e、 g。

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

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

    $query = false;

    if ( is_array( $item->classes ) ) {

        foreach( $item->classes as $class ) {
            if ( $class == \'some_marker_class_to_watch_for_goes_here\') {
                $query = true;
            }
        }
    }

    if ( $query ) {
        $args = array(
        );
        $q = new WP_Query($args);
        if($q->have_posts()){
            while($q->have_posts()){
                $q->the_post();
                // do stuff and append output to $item_output, dont echo it out
            }
        }
        wp_reset_postdata();
    }
    return $item_output;
}
总之,这是一件相当高级的事情。

如果您想更进一步,可以将UI控件添加到菜单拉出本身,并将数据存储为每个菜单导航项的post meta。这将是一种更好的方法,但它不适合胆小的人,因为它需要在管理后端使用JS代码,并且需要一个自定义的walker来为nav管理界面呈现初始html。

结束

相关推荐

Wordpress Custom Menus Issue

在我的模板中,我使用这样的调用来输出一些自定义菜单:<?php wp_nav_menu(array(\'container_class\' => \'secondary-navigation\', \'theme_location\' => \'secondary\')); ?> 自从升级到WordPress 3.1.4后,我就可以获得完整的页面列表,而不是自定义菜单我看到修复程序(通过谷歌)说我应该添加以下内容来修复此问题:\'fallback_cb\' => f