Formulário de Contado que retorna um CSV

  • Avatar de Desconhecido

    Olá amigos!
    Preciso implementar a seguinte funcionalidade em um site:
    O usuário acessa a página de contato do site e preenche o formulário e clica em enviar.
    O destinatário do formulário além de receber os dados dos campos que foram preenchidos no formulário no corpo do e-mail, recebe também um arquivo no formato CSV com todos os campos do formulário, para que tenha a praticidade de pegar esse arquivo que recebeu e colocar os dados numa planilha de excel.
    No wordpress eu utilizei o contact form 7 pra criar o formulário.
    Sabem dizer se tem algum plugin que implementa essa funcionalidade?
    Ou se não tiver um plugin, um código PHP pra executar essa função.

    Desde já agradeço a ajuda de todos!

  • Avatar de Desconhecido

    Boa tarde.

    Ninguém respondeu o meu tópico, mas com a ajuda do chat GPT eu consegui criar o código PHP que está executando perfeitamente essa função.

    Pro caso de alguém precisar dessa funcionalidade, segue abaixo o código PHP criado:

    add_filter(‘wpcf7_mail_components’, function($components, $contact_form) {
    // ID do formulário do Contact Form 7 que queremos interceptar
    $form_id = 123; // Substitua 123 pelo ID real do seu formulário

    if ($contact_form->id() != $form_id) {
    return $components;
    }

    // Pegando os dados do formulário
    $submission = WPCF7_Submission::get_instance();
    if (!$submission) {
    return $components;
    }

    $posted_data = $submission->get_posted_data();

    // Removendo o campo “departamento”
    unset($posted_data[‘departamento’]);

    // Criando o conteúdo do CSV
    $csv_file = wp_upload_dir()[‘path’] . ‘/formulario_contato.csv’; // Caminho do arquivo
    $csv_handle = fopen($csv_file, ‘w’);

    // Cabeçalhos do CSV
    fputcsv($csv_handle, array_keys($posted_data), ‘;’);

    // Convertendo arrays para strings (separados por vírgula)
    foreach ($posted_data as $key => $value) {
    if (is_array($value)) {
    $posted_data[$key] = implode(‘, ‘, $value);
    }
    }

    // Dados do CSV
    fputcsv($csv_handle, array_values($posted_data), ‘;’);

    fclose($csv_handle);

    // Anexa o CSV ao e-mail
    $components[‘attachments’][] = $csv_file;

    return $components;

    }, 10, 2);

  • Olá!

    Que bom que conseguiu um código que atenda suas necessidades.

    Como não há nenhum site em sua conta do WordPress.com com acesso a plugins, temas e códigos personalizados, o melhor local para este tipo de tópico é o fórum do WordPress.org.

  • O tópico ‘Formulário de Contado que retorna um CSV’ está fechado para novas respostas.