WordPress wp_enqueue_media()上载\u mimes未过滤
使用下面的代码,我试图使用WordPress媒体API只允许上传/选择某些图像类型。所以我在上传mime时使用add_filter来限制允许的mime类型。使用get\u allowed\u mime\u types()我得到一个数组,其中只包含我想要的mime类型。但是,当我单击“更改图像”按钮时,我仍然能够上载以前未列出的mime类型的文件(如PDF)。我做错了什么WordPress wp_enqueue_media()上载\u mimes未过滤,wordpress,Wordpress,使用下面的代码,我试图使用WordPress媒体API只允许上传/选择某些图像类型。所以我在上传mime时使用add_filter来限制允许的mime类型。使用get\u allowed\u mime\u types()我得到一个数组,其中只包含我想要的mime类型。但是,当我单击“更改图像”按钮时,我仍然能够上载以前未列出的mime类型的文件(如PDF)。我做错了什么 public static function file_uploader( $element_id = null, $mult
public static function file_uploader( $element_id = null, $multiple = true )
{
add_filter( 'upload_mimes', array( 'JBLAB_Utils', 'images_upload_mimes' ) );
var_dump( get_allowed_mime_types() );
/**
* outputs:
* array(3) {
* ["jpg|jpeg|jpe"]=>
* string(10) "image/jpeg"
* ["gif"]=>
* string(9) "image/gif"
* ["png"]=>
* string(9) "image/png"
* }
*/
$multiple = ( $multiple === true ) ? 'true' : 'false';
wp_enqueue_script('jquery');
wp_enqueue_media();
?>
<div>
<?php
if ( empty( $element_id ) )
{
$element_id = "jblab_uploaded_file_url";
?>
<label for="jblab_uploaded_file_url"><?php _e( 'Image', 'jblab-radionomy' ); ?></label>
<input type="text" name="jblab_uploaded_file_url" id="jblab_uploaded_file_url" class="regular-text">
<?php
}
?>
<input type="button" name="jblab_upload_file_upload_btn" id="jblab_upload_upload_btn" class="button-secondary" value="<?php _e( 'Change Image', 'jblab-radionomy' ); ?>">
</div>
<script type="text/javascript">
jQuery(document).ready(function($){
$('#jblab_upload_upload_btn').click(function(e) {
e.preventDefault();
var image = wp.media({
title: '<?php echo str_replace( "'", "\'", __( 'Change Image', 'jblab-radionomy' ) ); ?>',
multiple: <?php echo $multiple; ?>
}).open()
.on('select', function(e){
var uploaded_image = image.state().get('selection').first();
var image_url = uploaded_image.toJSON().url;
<?php
echo "
if ($('#$element_id').is('img')) {
$('#$element_id').attr('src',image_url);
} else {
$('#$element_id').val(image_url);
}
";
?>
});
});
});
</script>
<?php
}
public static function images_upload_mimes ( $mimes = array() )
{
//unset( $mimes );
$mimes = array(
'jpg|jpeg|jpe' => 'image/jpeg',
'gif' => 'image/gif',
'png' => 'image/png',
);
return $mimes;
}
公共静态函数文件上传器($element\u id=null,$multiple=true)
{
添加过滤器('upload_mimes',数组('JBLAB_Utils','images_upload_mimes');
var_dump(get_allowed_mime_types());
/**
*产出:
*阵列(3){
*[“jpg | jpeg | jpe”]=>
*字符串(10)“图像/jpeg”
*[“gif”]=>
*字符串(9)“图像/gif”
*[“png”]=>
*字符串(9)“图像/png”
* }
*/
$multiple=($multiple===true)?'true':'false';
wp_排队_脚本('jquery');
wp_排队_媒体();
?>
好的,我找到了解决问题的办法
我必须将添加过滤器移到调用上载API的函数之外。如果有人有同样的问题,请尝试在过程中尽快添加过滤器,这应该可以解决问题。好的,因此我找到了解决问题的方法
我不得不将add_过滤器移到调用upload API的函数之外。如果有人有同样的问题,请尝试在过程中尽快添加_过滤器,这样应该可以解决问题