混合表单域上的MEDIA_HANDLE_UPLOAD(非必填文件输入)

时间:2016-12-01 作者:Adson Cicilioti

我与theme Odin框架的开发合作,该框架有几个类可以利用从头开始的站点启动。其中,我们有abstract-front-end-form.php (link to function line), 为前端准备表单字段,以及class-contact-form.php 创建简单有效的联系方式。

我的朋友们收养了media_handle_upload 用于文件类型字段的函数。问题是,默认情况下,它是强制性的,我们希望它以可选的形式出现。但通过提交带有空“文件”字段的表单,它会返回错误“未上载任何文件”这是media\\u handle\\u upload函数的本机验证。

我发现跳过此验证的一种方法是调整错误字符串。

if ( is_wp_error( $attachment_id ) && $attachment_id->get_error_message() !== \'No file was uploaded.\' ) ) {
    $error = apply_filters( \'odin_front_end_form_upload_error_\' . $this->id, sprintf( \'%s %s.\', \'<strong>\' . $this->get_field_label( $id ) . \'</strong>\', $attachment_id->get_error_message() ) );
    $this->set_errors( $error );
} else {
   ...
}
所以我可以用空的file 字段(可选)。

我们很可能会采用这种解决方案,但它似乎有点模糊,因为在WP核心更新中,可以修改这些上载错误字符串。

如果有人知道我不需要使用插件或功能,我会感激他们的想法。

1 个回复
最合适的回答,由SO网友:Adson Cicilioti 整理而成

我已经能够使用检查文件大小$ _FILES [$ id] [ \'size\'] > 0. 因此,仅当存在以字节为单位的文件时,才会运行WP\\U错误验证。

相关推荐

尽管ALLOW_UNFIRTED_UPLOADS设置为TRUE,.epub文件仍被阻止

我仍然得到X.epub:抱歉,出于安全原因,不允许使用此文件类型;尽管添加了:define(\'ALLOW_UNFILTERED_UPLOADS\', true); 给我的wp-config.php.当然,我允许在博客网络的配置中使用这种类型的文件:这是正常情况吗(以及using filters 是唯一的解决方法吗)?或者这是一件奇怪的事情(比如某个插件或主题覆盖了它),你应该继续寻找可能的原因?EDIT (在评论和更多测试之后):这是。epub文件仅与问题相关。我能够证实ALLOW_UNFIL