隐藏访问者的菜单项并根据角色进行筛选

时间:2011-12-13 作者:Corbula

在我的菜单中,我有一些菜单项,我不想显示给没有登录的人。其中一个我只想向某个角色的登录用户显示,另一个则向所有登录的用户显示。

其中一个叫做“我的打印机”。这应该对登录的每个人都可见。

另一种称为“合作伙伴”。这应该只对具有合作伙伴角色的用户可见。

我尝试过使用角色范围器,但我发现它很难使用,而且没有多大意义。它还干扰了许多我不需要的其他东西。

我是否可以根据菜单项的角色隐藏它们?

谢谢

EDIT

我已经使用管理员创建了菜单,并将该菜单放置在主题位置。要隐藏的菜单项在此菜单中。

感谢下面的两个答案,但都没有达到我的目标。

4 个回复
最合适的回答,由SO网友:Corbula 整理而成

我已经使用管理员创建了菜单,并将该菜单放置在主题位置。要隐藏的菜单项在此菜单中。

感谢下面的两个答案,但都没有达到我的目标。

SO网友:PrivateUser

您需要在标题中定义类似的内容。php文件。

<?php
if ( is_user_logged_in() ) {
    echo \'Welcome, registered user!\';
} else {
    echo \'Welcome, visitor!\';
}
?>
使用以下代码创建一个新角色,并将其放入函数中。php

add_role(\'partners\', \'Partners\', array(
    \'read\' => true, // True allows that capability, False specifically removes it.
    \'edit_posts\' => true,
    \'delete_posts\' => true,
    \'edit_published_posts\' => true,
    \'publish_posts\' => true,
    \'edit_files\' => true,
    \'import\' => true,
    \'upload_files\' => true //last in array needs no comma!
));
现在让我们假设您的合作伙伴具有“编辑发布的帖子”的功能。您可以这样定义菜单。

<?php
    if ( is_user_logged_in() ) {
            if(current_user_can(\'edit_published_posts\')) {
            echo \'Welcome, Partner!\';
            }
            else {
            echo \'Welcome, registered user!\';
            }
    } 
    else {
        echo \'Welcome, visitor!\';
    }
    ?>

SO网友:ptriek

您可以通过在“外观->菜单”中创建不同的菜单来完成此操作,然后使用类似的方式显示当前角色的菜单:

     <?php
        global $wp_roles;

        foreach ( $wp_roles->role_names as $role => $name ) :
            if (current_user_can( $role ) && $role == \'partner\') {
                wp_nav_menu( array( \'theme_location\' => \'partner-menu\' ) );
            }
        endforeach;
    ?>

结束

相关推荐

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