根据用户角色显示网站内容

时间:2016-10-17 作者:Nancy

如果登录用户不是订阅者,我试图隐藏购物车菜单图标。现在,我的functions.php, 但如果我是订户,我仍然可以看到购物车。

  add_filter( \'wpmenucart_menu_item_wrapper\', \'wpmenucart_hide_for_visitors\', 10, 1 );
function wpmenucart_hide_for_visitors( $menu_item_li ) {
    if ( is_user_logged_in() || !current_user_can( $current_user, "subscriber" )) {
        return $menu_item_li;
    } else {
        return;
    }
}
我看不出我的代码有什么问题。

1 个回复
最合适的回答,由SO网友:Max Yudin 整理而成

代码中有错误

首先,您正在使用current_user_can() 以错误的方式运行。它有两个参数-$capability$object_id. 您不需要后者,因此,在您的情况下:

current_user_can(\'subscriber\')
在我看来,最好使用capability 而不是user role 在此函数中。例如,订阅者不能编辑帖子,这与其他用户角色不同,因此我要更改\'subscriber\'\'edit_posts\':

其次if 条件您的代码表示用户必须登录或其角色must not be 订阅者。听起来应该像用户必须登录并且must be not a 订阅者。

add_filter( \'wpmenucart_menu_item_wrapper\', \'wpmenucart_hide_for_visitors\', 10, 1 );

function wpmenucart_hide_for_visitors( $menu_item_li )
{
    // user is logged in AND his role is higher than a subscriber
    if ( is_user_logged_in() && current_user_can(\'edit_posts\') ) {
        return $menu_item_li;
    } else {
        return;
    }
}
请参见current_user_can 在法典中。

相关推荐

显示作者姓名PHP(自制插件)

我有一个需要帮助的问题,因为我自己找不到解决办法。我接管了一个网站,之前有人在那里创建了一个自制插件。。使用默认插件“Contact Form 7”,用户可以在页面上创建帖子。()https://gyazo.com/c8b20adecacd90fb9bfe72ad2138a980 )关于自行创建的插件“Contact Form 7 extender”,帖子是通过PHP代码在后台生成的(https://gyazo.com/115a6c7c9afafd2970b66fd421ca76a3)其工作原理如下:如果