拒绝使用Media Uploader上传尺寸错误的图像


12

我正在为将图片添加到“后编辑”屏幕中的“自定义字段”的超严格设置进行工作。我的最佳方案是,当用户尝试为该特定的自定义值上传尺寸错误的图片时,添加一条“自定义错误”消息。

我知道我可以使用任何自定义上传器来执行此操作,但是我真的更喜欢使用常规媒体上传器来执行此操作。我也知道wp_handle_upload_prefilter,我已经使用它来验证文件名并根据通用需求生成自定义错误消息。我现在需要的是一种基于我们要上传到哪个字段的使用自定义要求拒绝上传的方法。

我也知道上传时将发布的图片与发布的图片区分开来,但是我想要一个预先保存的解决方案。

看起来像这样:

在此处输入图片说明

关于如何通知wp_handle_upload_prefilter(或类似)我们正在处理的哪个领域的任何想法?


有趣的问题。一般来说,我在考虑通过自定义媒体上传器模式脚本传递自定义变量,然后您可以通过该通道以进一步区分。这可能是唯一的方法,尽管我对此不是100%的确定。如果继续进行查找,您将找到所需的信息。然后返回并使用该具体信息完成您的问题,或者,如果您自己解决问题,请将您的解决方案作为答案。祝好运!
Nicolai 2014年

如果我说“ 自定义”,则是指WordPress Media Uploader的自定义用法,例如此处讨论的示例。
Nicolai 2014年

是的,在Flash Uploader时代,我以前做过类似的事情。这次我打算采用一种更清洁的方式,但这也许是不可能的。会调查一下,谢谢!
Morideida 2014年

我听到了您的声音,但实际上我认为这样做不是那么糟糕。此外,就像我说的那样,我只是不知道/不知道另一种方式来做,但是可能会有更多知识的人来解决。
Nicolai 2014年

1
你要继续吗?如果没有,但是您正在处理一些代码,请将其发布。我愿意为这个问题建立更多的基础。
Nicolai 2014年

Answers:


4

在您的处理程序中,如果您设置“错误”,则会显示错误消息并取消上传

add_filter( 'wp_handle_upload_prefilter', 'custom_upload_filter' );

function custom_upload_filter( $file ) {
    $image_info   = getimagesize( $file['tmp_name'] );
    $image_width  = $image_info[0];
    $image_height = $image_info[1];

    if ( $image_with !== 800 || $image_height !== 600 ) {
        $file['error'] = __( 'Images must be sized exactly 800 * 600', 'your_textdomain' );
    }
    return $file;
}

如果您的用户尝试上传其他大小,则消息将为:

thefile.png has failed to upload due to an error  
Size must be exactly 800 * 600

请注意,这wp_handle_upload_prefilter是在上传处理的早期开始的,因此您可能需要测试文件是否已经正确上传(从HTTP的角度来看)并且是图像,然后再测试大小。

参考:wp_handle_upload()核心文件中的功能wp-admin/includes/file.php


是的,这就是我已经在验证文件名和svg属性的方法。我现在需要的是一种将另一个参数传递给该(或另一个)过滤器的方法,该方法指示该上载正在填充哪个字段,以便我可以对不同的字段应用不同的限制。实际上,这是暂时的。稍后,我将用我的发现更新问题。
moraleida
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.