好的,这只是一个如何存档的示例。。
首先将上载目录更改为当前用户用户名。例如上传/管理
function wpse_16722_type_upload_dir( $args ) {
// Get current user data
$current_user = wp_get_current_user();
// Make upload dir to current username
$newdir = \'/\' . $current_user->user_login;
$args[\'path\'] = str_replace( $args[\'subdir\'], \'\', $args[\'path\'] ); //remove default subdir
$args[\'url\'] = str_replace( $args[\'subdir\'], \'\', $args[\'url\'] );
$args[\'subdir\'] = $newdir;
$args[\'path\'] .= $newdir;
$args[\'url\'] .= $newdir;
return $args;
}
add_filter( \'upload_dir\', \'wpse_16722_type_upload_dir\' );
然后我们需要一个函数来检查当前用户上传的大小。我发现一个函数
recurse_dirsize
在内部
ms-functions.php 以字节为单位计算目录。
/**
* Get the size of a directory recursively.
*
* Used by get_dirsize() to get a directory\'s size when it contains
* other directories.
*
* @since MU
*
* @param string $directory
* @return int
*/
function recurse_dirsize( $directory ) {
$size = 0;
$directory = untrailingslashit( $directory );
if ( !file_exists($directory) || !is_dir( $directory ) || !is_readable( $directory ) )
return false;
if ($handle = opendir($directory)) {
while(($file = readdir($handle)) !== false) {
$path = $directory.\'/\'.$file;
if ($file != \'.\' && $file != \'..\') {
if (is_file($path)) {
$size += filesize($path);
} elseif (is_dir($path)) {
$handlesize = recurse_dirsize($path);
if ($handlesize > 0)
$size += $handlesize;
}
}
}
closedir($handle);
}
return $size;
}
然后,我们需要检查当前用户上传的内容是否大于x,如果是,请禁用
media_buttons
function wpse_16722_user_upload_size() {
// Get current user data
$current_user = wp_get_current_user();
// Array of key => value pairs
$uploads = wp_upload_dir();
$dir = $uploads[\'basedir\'] . \'/\' . $current_user->user_login;
if( file_exists( $dir ) && is_dir( $dir ) ) {
$size = recurse_dirsize( $dir ) / 1024 / 1024;
// Convert bytes to human readable format
$new_size = round( $size / 1024 * 1024, 2 );
// If current users upload dir is
// Bigger than 20 MB disable
// Upload buttton
if( $new_size >= 20 ) {
remove_action( \'media_buttons\', \'media_buttons\' );
}
}
}
add_action(\'admin_head\', \'wpse_16722_user_upload_size\');
您还希望控制多个用户和不同的大小。我建议您添加一个设置页面,用以保存用户可用大小
update_user_meta($user_id, \'size_limit\', $value );
了解更多信息
here当您将尺寸添加到users_meta
您可以在函数中更改大小wpse_16722_user_upload_size
“20”至以下尺寸get_user_meta( $user_id, \'size_limit\');