首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >current_user_can()导致临界错误

current_user_can()导致临界错误
EN

WordPress Development用户
提问于 2021-03-22 00:24:12
回答 1查看 357关注 0票数 0

我正在编写一个函数,以便在前端的管理菜单中添加到媒体库的链接:

代码语言:javascript
复制
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_user_can( 'upload_files‘)) {“,该函数可以正常工作。但是有了if语句,我得到了一个关键的错误。

我是不是遗漏了什么?我只想看看用户是否可以上传文件。如果没有,他们不需要媒体库链接。

谢谢,克里斯

EN

回答 1

WordPress Development用户

回答已采纳

发布于 2021-03-22 00:36:44

问题是wp_get_current_user ( current_user_can所依赖的)是可插拔的,这意味着它直到插件加载之后才会加载(给插件一个重写它的机会)。这意味着它无法从插件文件的顶层调用。

相反,我会在钩子里做角色检查。

代码语言:javascript
复制
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 );

(但是主题是在可插拔函数之后加载的,所以您的原始代码在主题中工作得很好。)

票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/385488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档