您要使用的筛选器是“upload\\u mimes”http://xref.yoast.com/trunk/_functions/get_allowed_mime_types.html
函数get\\u allowed\\u mime\\u types获取过滤后的$mimes数组,因此如果只允许csv上载,可以执行以下操作:
add_filter(\'upload_mimes\', \'javiervd_filter_mime_types\');
function javiervd_filter_mime_types($mimes)
{
return array(\'csv\' => \'text/csv\');
}
通常使用过滤器时,您希望更改输入并返回它,但因为您只需要。csv上传时,您只需返回一个包含一个元素的数组。需要注意的是,这将覆盖整个站点允许的上载类型。
更新:好的,下面是你可以做的。我假设用户已注销,这是一种很好的方法,可以测试这种上传是否只允许CSV。如果不是,您总是可以修改If检查,并确保过滤器只应用于前端上传。
add_filter(\'wp_handle_upload_prefilter\' \'javiervd_maybe_filter_mimes\');
function javiervd_maybe_filter_mimes($file)
{
//if not logged in, limit uploads to csvs
if(!is_user_logged_in())
{
add_filter(\'upload_mimes\', \'javiervd_filter_mime_types\');
//add another filter to remove the mime filter so it only applies for the one function call
add_filter(\'wp_handle_upload\', \'javierd_remove_mime_filter\');
}
}
function javiervd_filter_mime_types($mimes)
{
return array(\'csv\' => \'text/csv\');
}
function javiervd_remove_mime_filter($upload)
{
remove_filter(\'upload_mimes\', \'javiervd_filter_mime_types\');
return $upload;
}