尝试在Wordpress中为上传mimes设置循环。我有一个CMS选项,带有逗号分隔列表(option_file_types),用户可以在其中指定可以上载的文件类型列表。但我无法弄清楚如何将它们全部放入foreach并正确输出。当不在foreach中时,它适用于一个文件类型条目。任何帮助都将非常感激。
代码:
function custom_upload_mimes ($existing_mimes = array()) {
$file_types = get_option('option_file_types');
$array = $file_types;
$variables = explode(", ", $array);
foreach($variables as $value) {
$existing_mimes[''.$value.''] = 'mime/type']);
}
return $existing_mimes;
}
预期输出:
$existing_mimes['type'] = 'mime/type';
$existing_mimes['type'] = 'mime/type';
$existing_mimes['type'] = 'mime/type';
答案 0 :(得分:2)
function custom_upload_mimes ($existing_mimes = array()) {
$file_types = get_option('option_file_types');
$variables = explode(',', $file_types);
foreach($variables as $value) {
$value = trim($value);
$existing_mimes[$value] = $value;
}
return $existing_mimes;
}
如果您的$file_types
不包含mime类型,但文件扩展名正如评论所示,那么您还需要将文件扩展名转换为mime类型。像this one这样的类可以帮助您将扩展转换为适当的mime类型。
例如:
require_once 'mimetype.php'; // http://www.phpclasses.org/browse/file/2743.html
function custom_upload_mimes ($existing_mimes = array()) {
$mimetype = new mimetype();
$file_types = get_option('option_file_types');
$variables = explode(',', $file_types);
foreach($variables as $value) {
$value = trim($value);
if(!strstr($value, '/')) {
// if there is no forward slash then this is not a proper
// mime type so we should attempt to find the mime type
// from the extension (eg. xlsx, doc, pdf)
$mime = $mimetype->privFindType($value);
} else {
$mime = $value;
}
$existing_mimes[$value] = $mime;
}
return $existing_mimes;
}