代码不起作用的原因是因为代码中存在印刷错误。该代码实际上触发了一个错误。您可以启用debug mode 查看错误。
但这并不是你的代码真正的问题所在。真正的错误是,您使用的函数检查user capability 并尝试检查用户的角色。这是因为WordPress是如何处理角色和功能的,但这不是检查用户角色的正确方法。
实际上,在中使用用户角色current_user_can()
可能会触发_doing_it_wrong()
在不久的将来。看见#38653 Trigger a doing it wrong when checking a role name as a capability. 使用current_user_can()
检查用户角色已经错误很长时间了。参见2006年的帖子,How to check if a WordPress user is an “administrator”, WordPress首席开发者Mark Jaquith
您应该将功能用于该功能,而不是角色。
如果要检查用户的角色,则应执行以下操作。确实没有好的方法来检查用户的角色,因为他们可以有多个角色,而且用户的功能不能保证与他们所属的角色相同。
add_filter( \'upload_mimes\', \'wpse_263936_upload_mimes\' );
function wpse_263936_upload_mimes( $mimes ) {
if( ! in_array( \'administrator\', wp_get_current_user()->roles ) ) {
$mimes = array(
\'jpg|jpeg|jpe\' => \'image/jpeg\',
\'png\' => \'image/png\',
);
}
return $mimes;
}
如果要继续使用
current_user_can()
, 您应该检查以下功能:
promote_users
或
manage_options
默认情况下,仅应用于管理员角色。
add_filter( \'upload_mimes\', \'wpse_263936_upload_mimes\' );
function wpse_263936_upload_mimes( $mimes ) {
if( ! current_user_can( \'promote_users\' ) ) {
$mimes = array(
\'jpg|jpeg|jpe\' => \'image/jpeg\',
\'png\' => \'image/png\',
);
}
return $mimes;
}
或者你甚至可以定义
ALLOW_UNFILTERED_UPLOADS
在您的
wp-config.php
并添加
unfiltered_upload
管理员角色的功能,并进行检查。