media_handle_upload em formulario de contato com campos mistos
-
Colaboro com o desenvolvimento do tema Odin Framework, que possui várias classes que alavancam o lançamento de um site do zero.
Entre eles, temos o abstract-front-end-form.php (link para a função em questão), que prepara campos de formulário para o front-end, e o class-contact-form.php para criar um formulário de contato simples e eficaz.Meus colegas adotaram a função media_handle_upload para os campos do tipo file. O problema é que por padrão ele é obrigatório e gostaríamos de ter ele presente no form porem opcional. Mas ao submeter o form com o campo ‘file’ vazio ele retorna o erro ‘No file was uploaded.’ que é uma validação nativa da função media_handle_upload que não deixa submeter o campo file vazio.
Uma forma que encontrei de saltar essa validação foi condicionando pela string do erro.
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 { ... }
Assim ele me deixa submeter o formulário com o campo
file
vazio (opcional).Nós podemos muito bem seguir com essa solução, mas nos parece um pouco obscuro, uma vez que numa atualização do WP core essas strings de erros de upload possam ser modificadas.
Se alguém souber de alguma outra forma que não precise usar um plugin ou recursos, serei gratos por seus pensamentos.
- O tópico ‘media_handle_upload em formulario de contato com campos mistos’ está fechado para novas respostas.