我正在编写一个函数,在前端的“管理”菜单中添加指向媒体库的链接:
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语句,我遇到了一个严重错误。
我错过什么了吗?我只是想检查一下用户是否可以上传文件。如果没有,则不需要媒体库链接。
谢谢,克里斯
最合适的回答,由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 );
(但是,主题是在可插入函数之后加载的,因此您的原始代码在主题中可以正常工作。)