post #6175

Adicionar Campos Personalizados nos Formulários Elementor via PHP

Publicado em: 17/04/2025 / Atualizado em: 18/04/2025

Categorias: BlogElementorElementorPHPWordpress

Nesse post eu vou compartilhar um trecho de código em PHP que possibilita você adicionar campos extras globalmente em todos os formulários do seu site WordPress desenvolvidos com Elementor. Nesse código eu dou um exemplo de um checkbox que pode ser adicionado logo depois de todos os outros campos e antes do botão de enviar.

function adicionar_campos_em_formularios_elementor( $widget_content, $widget ) {
    if ( 'form' === $widget->get_name() ) {
        $checkbox_html = '
            <div class="elementor-field-type-checkbox elementor-field-group elementor-col-100">
                <label>
                    <input type="checkbox" name="form_fields[checkbox_teste]" value="1" required>
                    <span>Esse checkbox é apenas de teste.</span>
                </label>
            </div>
        ';
        $pattern = '/(<div[^>]*class="[^"]*elementor-field-type-submit[^"]*"[^>]*>)/i';
        $widget_content = preg_replace($pattern, $checkbox_html . '$1', $widget_content);
    }

    return $widget_content;
}
add_filter( 'elementor/widget/render_content', 'adicionar_campos_em_formularios_elementor', 10, 2 );

Documentação Elementor Dev de referencia: https://developers.elementor.com/docs/hooks/render-widget-content/

BONUS: Caso queira salvar os dados do campo adicionado dinamicamente no WordPress e também enviar junto no e-mail ou webhook, você pode usar essa função adicional:

add_action( 'elementor_pro/forms/process', function( $form_record, $ajax_handler ) {
    $fields = $form_record->get( 'fields' );
	
    $value_checkbox_teste = sanitize_text_field( $_POST['form_fields']['checkbox_teste'] ) === '1' ? 'Sim' : 'Não';
	$fields['checkbox_teste'] = [
		'id'	=> 'Checkbox de teste',
		'value' => $value_checkbox_teste,
		'raw'   => $value_checkbox_teste,
		'title' => esc_html__( 'Checkbox de teste', 'elementor-form-checkbox_teste-field' )
	];
	
	$form_record->set( 'fields', $fields );
	$form_record->set( 'raw_fields', $fields );
}, 100, 2 );

Referencia: https://developers.elementor.com/docs/hooks/forms/#form-processing

Publicações recomendadas:


Inscreva-se em Nossa News:

Seja notificando sempre que tiver conteúdo novo disponível no meu canal do Youtube ou artigo no meu Blog.

Bruno Devs News


Link Curto para Compartilhamento

Compartilhe esse conteudo nas redes sociais ou por mensagem usando o link curto abaixo. Basta clicar em cima do link para copiar.

bruno.art.br/pb/6175

ID de Referência: 6175

Sugira uma publicação

Envie uma mensagem e sugira um publicação sobre um assunto que tenha dificuldades de resolver.

Clique aqui e entre em contato