定义ALLOW\\u UNFILTERED\\u UPLOADS已经不够了:它不授予该功能,只允许具有UNFILTERED\\u UPLOADS功能的非管理员用户上载任何文件(多站点上的文件除外)。你还需要赋予自己这种能力,例如。from Sebastian\'s answer here
#
# For this, see: wp-includes/capabilities.php > map_meta_cap()
#
function wpse_6533_map_unrestricted_upload_filter($caps, $cap) {
if ($cap == \'unfiltered_upload\') {
$caps = array();
$caps[] = $cap;
}
return $caps;
}
add_filter(\'map_meta_cap\', \'wpse_6533_map_unrestricted_upload_filter\', 0, 2);
但是,只为cron作业启用XML文件类型可能更简单,例如:。
function mime_types_add_xml( $mime_types ) {
// PHP\'s fileinfo returns text/xml not application/xml
$mime_types[ \'xml\' ] = \'text/xml\';
return $mime_types;
}
if ( defined( \'DOING_CRON\' ) {
add_filter( \'mime_types\', \'mime_types_add_xml\' );
}
然而,只有当XML文件具有文档声明时,这才会起作用,例如:。
<?xml version="1.0" encoding="utf-8"?>
WordPress使用PHP fileinfo来检测文件是否与您提供的扩展名匹配,这只会为我生成带有声明的文本/xml。(否则它将返回text/plain,然后拒绝该文件,因为该文件与.xml扩展名的预期text/xml不匹配。)如有必要,可以使用wp\\u check\\u filetype\\u和ext筛选器修复此检查。