我正在尝试在Wordpress中创建一个主题定制器控件,允许用户上载MP4和WEBM视频,在这样做时,我需要创建一个清理选项来验证文件类型。我遇到了一些麻烦,仍然可以上传任何类型的文件。。。
下面是我正在做的:
function customizer_header_image( $wp_customize ) {
// Header Background Video (MP4)
$wp_customize->add_setting( \'header_video_mp4\', array(
\'default\' => \'\',
\'sanitize_callback\' => \'check_header_video\'
) );
$wp_customize->add_control(
new WP_Customize_Upload_Control( $wp_customize, \'header_video_mp4_control\', array(
\'label\' => __( \'Header Video (MP4)\', \'rainier\' ),
\'section\' => \'header_image\',
\'settings\' => \'header_video_mp4\',
) )
);
}
// Register the customize functions
add_action( \'customize_register\', \'customizer_header_image\' );
// Custom sanitize function for header video uploads
function check_header_video($file){
return validate_file($file, array(\'webm\', \'mp4\'));
}
正如你所见,我通过了控制
\'sanitize_callback\'
my的参数
check_header_video
, 在那里,您可以看到,在该函数中,它针对本机Wordpress函数运行文件
validate_file
, 具有可接受的文件类型。
运气不太好。有人知道我做错了什么吗?
最合适的回答,由SO网友:TheDeadMedic 整理而成
validate_file
没有按照您预期的方式工作-它会检查$file
位于允许的文件数组中,而不仅仅是其扩展名/mime类型。
你在寻找wp_check_filetype
. 然而,最终要做的就是检查扩展名(即,它不读取文件头/否则确定mime类型)。
除非您实现自己的PHP库来进行mime检查,否则会更快;更容易对文件名执行简单的正则表达式检查:
return preg_match( \'/\\.(mpe?g4?|webm)$/\', $file ); // Or similar