用于Wordpress的Foreach循环上传mimes

时间:2011-03-17 16:47:01

标签: php wordpress foreach

尝试在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'; 

1 个答案:

答案 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;
}