CURRENT_USER_CAN()导致严重错误

时间:2021-03-22 作者:c_estep_tcbguy

我正在编写一个函数,在前端的“管理”菜单中添加指向媒体库的链接:

function add_media_link_to_admin_menu( $wp_admin_bar ) {

    // add Media Library to admin menu
        $wp_admin_bar->add_menu( array(
            \'parent\' => \'appearance\',
            \'id\'     => \'media-library\',
            \'title\'  => \'Media Library\',
            \'href\'   => \'/wp-admin/upload.php\',
        ) );
        
}

// restrict to only users who can upload media
if ( !current_user_can( \'upload_files\' ) ) {

    add_action( \'admin_bar_menu\', \'add_media_link_to_admin_menu\', 999 );

}
不包括;if(!current\\u user\\u can(\'upload\\u files\'){函数工作正常。但是使用if语句,我遇到了一个严重错误。

我错过什么了吗?我只是想检查一下用户是否可以上传文件。如果没有,则不需要媒体库链接。

谢谢,克里斯

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

问题是wp\\u get\\u current\\u user(current\\u user\\u可以依赖)是可插入的,这意味着只有在加载插件之后才会加载它(以便插件有机会覆盖它)。这意味着它不能从插件文件的顶层调用。

相反,我会在挂钩内进行角色检查,例如:。

function add_media_link_to_admin_menu( $wp_admin_bar ) {
    if ( current_user_can( \'upload_files\' ) ) {
        // add Media Library to admin menu
        $wp_admin_bar->add_menu(array(
            \'parent\' => \'appearance\',
            \'id\' => \'media-library\',
            \'title\' => \'Media Library\',
            \'href\' => \'/wp-admin/upload.php\',
        ));
    }
}
add_action( \'admin_bar_menu\', \'add_media_link_to_admin_menu\', 999 );
(但是,主题是在可插入函数之后加载的,因此您的原始代码在主题中可以正常工作。)

相关推荐

GET_USERS/WP_USER_QUERY在注销时返回空

我有一个相当基本的用户查询,可以在我正在开发的网站上查询工作人员。当您登录WordPress时,它们会显示在前端。但当注销时,它们不会显示。我做了一个var\\u转储,它在注销时返回为空。我找不到任何合乎逻辑的理由。我尝试了不询问角色,但它也做了同样的事情。<?php $args = array( \'role__in\' => array(\'Staff\') ); // The Query $user_query = get_use