我正在编写一个函数,以便在前端的管理菜单中添加到媒体库的链接:
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语句,我得到了一个关键的错误。
我是不是遗漏了什么?我只想看看用户是否可以上传文件。如果没有,他们不需要媒体库链接。
谢谢,克里斯
发布于 2021-03-22 00:36:44
问题是wp_get_current_user ( current_user_can所依赖的)是可插拔的,这意味着它直到插件加载之后才会加载(给插件一个重写它的机会)。这意味着它无法从插件文件的顶层调用。
相反,我会在钩子里做角色检查。
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 );(但是主题是在可插拔函数之后加载的,所以您的原始代码在主题中工作得很好。)
https://wordpress.stackexchange.com/questions/385488
复制相似问题