WordPress博客根据不同的用户权限显示不同的菜单

WordPress博客中如何对不同权限的用户显示不同的菜单呢?由于Wordpress源码的菜单函数 wp_nav_menu() 的 wp_nav_menu_args 恰是处理函数参数的,所以博主们完全可以利用这一点实现对不同权限的用户显示不同的菜单……

当然你的主题需要有多个不同的菜单,再记录下这些菜单的ID,之后在function.php函数文件里添加下面的代码:

add_filter( 'wp_nav_menu_args', 'child_nav_menu_args' );
/**
 * Modifies the Navigation Menu based on current user capabilities
 *
 * @uses gbootstrap_nav_args() Sets Genesis Bootstrap Navigation Args for wp_nav_menu().
 * @param  array $args Arguments for wp_nav_menu()
 * @return array $args Modified Arguments for wp_nav_menu()
 * @since 1.0.0
 */
function child_nav_menu_args( $args ) {
    locations.
    if ( '' != $args['theme_location'] ) return;
    //这里分别对应填上对应的用户权限及对应的菜单id, 也可以填写菜单名或是菜单slug
    $menus = array(
        'administrator' => 3,
        'editor'        => 4,
        'author'        => 7,
        'contributor'   => 8,
        'subscriber'    => 9,
    );
    $current_user = wp_get_current_user();
    if ( $current_user->has_cap( 'manage_options' ) )
        $args['menu'] = $menus['administrator'];
    if ( $current_user->has_cap( 'edit_others_posts' ) )
        $args['menu'] = $menus['editor'];
    if ( $current_user->has_cap( 'publish_posts' ) )
        $args['menu'] = $menus['author'];
    if ( $current_user->has_cap( 'edit_posts' ) )
        $args['menu'] = $menus['contributor'];
    if ( $current_user->has_cap( 'read' ) )
        $args['menu'] = $menus['subscriber'];
    return $args;
}

本文由垃圾站编辑整理,转载请注明原文地址:http://www.lajiz.cn/1354.html

本文固定链接: http://www.lajiz.cn/1354.html | 垃圾站

该文章由 sdujane 于2013年01月29日发表在 WP教程 分类下, 访客可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客!
原创文章,转载请注明: WordPress博客根据不同的用户权限显示不同的菜单 | 垃圾站
关键字: ,

WordPress博客根据不同的用户权限显示不同的菜单:目前有11 条留言

  1. 6楼
    柳寻欢:

    站长 求个代码
    指定某个页面 游客可以发视频或者使用HTML
    ps:花七七的站很多人留言的啊
    有空多去LOC逛逛啊

    2013-03-21 下午 7:43 [回复]
  2. 网站就自己一个人更新,其实这些太高级的东东不想折腾!

    2013-01-31 上午 9:58 [回复]
    • 很多站长都是一个人做网站,有的做几十个甚至更多的网站!

      2013-01-31 下午 12:39 [回复]
  3. 你指的是后台管理菜单吗?

    2013-01-29 下午 10:32 [回复]
    • 指的是博客上方顶部菜单栏。

      2013-01-29 下午 11:51 [回复]
  4. 地板
    巧克力:

    都是高人!WP被你们折腾的越来越牛X了!支持!!

    2013-01-29 下午 2:56 [回复]
    • 哈哈,欢迎常来垃圾站博客逛逛!

      2013-01-29 下午 9:02 [回复]
  5. 板凳
    鸟先生:

    你说刷新一下换一个菜单还有看头, 针对用户的就木必要了·~~

    2013-01-29 下午 2:02 [回复]
    • 这个刷新一下随机显示一个菜单应该也可以实现……

      2013-01-29 下午 9:02 [回复]
  6. 沙发
    花七七:

    囧,整个站就我一个人……

    2013-01-29 下午 12:57 [回复]
    • 我这里也是,不过有个菜单是登陆后才显示

      2013-01-29 下午 8:21 [回复]

发表评论

快捷键:Ctrl+Enter