Ir ao conteúdo
  • Cadastre-se

Anderson Dutra

Membro Júnior
  • Posts

    1
  • Cadastrado em

  • Última visita

Tudo que Anderson Dutra postou

  1. Pessoal, boa noite! Desenvolvi um plugin para Wordpress com o objetivo de enviar números para sorteios. O código está funcionando e já atende grande parte da minha necessidade. Porém, estou com dois problemas que não estou conseguindo resolver: 1) Os números da sorte estão sendo enviados corretamente e de acordo com a sequência numérica configurada no painel. Porém quando o relógio do PC atinge a hora de geração salva nas configurações, deveria resetar a sequência e começar a enviar os números a partir do 1, mas neste ponto passa a enviar apenas o número 1 sucessivamente; 2) A parte do código que deveria bloquear por 3 horas um novo envio pelo mesmo e-mail digitado no formulário do Elementor Pro não está funcionando. Segue em anexo o código completo do plugin. Se puderem me ajudar a resolver esses problemas ficarei muito grato. Abraço! <?php /** * Plugin Name: Sua Música * Plugin URI: https://fm107.com.br * Description: Plugin personalizado para adicionar código ao formulário do Elementor * Version: 1.0.20 * Author: By Anderson José * Author URI: https://fm107.com.br */ // Função para adicionar opções de configuração no painel lateral function meu_plugin_personalizado_menu() { add_menu_page( 'Configurações do Meu Plugin', 'Meu Plugin', 'manage_options', 'meu-plugin-config', 'meu_plugin_personalizado_pagina_config', 'dashicons-admin-generic', 99 ); } /// Função para exibir a página de configuração do plugin function meu_plugin_personalizado_pagina_config() { if (!current_user_can('manage_options')) { wp_die(__('Você não tem permissões suficientes para acessar esta página.')); } // Processar e salvar as configurações aqui if (isset($_POST['submit'])) { update_option('meu-plugin-nome-formulario', $_POST['nome_formulario']); update_option('meu-plugin-horario-geração', $_POST['horario_geracao']); update_option('meu-plugin-email', $_POST['email']); update_option('meu-plugin-sequencia-numerica', $_POST['sequencia_numerica']); // Corrigido: nome do campo corrigido para 'sequencia_numerica' echo '<div class="notice notice-success"><p>Configurações salvas com sucesso!</p></div>'; } // Exibir o formulário de configuração ?> <div class="wrap"> <h1>Configurações do Meu Plugin</h1> <form method="post" action=""> <label for="nome_formulario">Nome do Formulário:</label> <input type="text" name="nome_formulario" id="nome_formulario" value="<?php echo get_option('meu-plugin-nome-formulario'); ?>"><br><br> <label for="horario_geracao">Horário de Geração:</label> <input type="text" name="horario_geracao" id="horario_geracao" value="<?php echo get_option('meu-plugin-horario-geração'); ?>"><br><br> <label for="email">E-mail:</label> <input type="text" name="email" id="email" value="<?php echo get_option('meu-plugin-email'); ?>"><br><br> <label for="sequencia_numerica">Sequência Numérica:</label> <input type="text" name="sequencia_numerica" id="sequencia_numerica" value="<?php echo get_option('meu-plugin-sequencia-numerica'); ?>"><br><br> <?php wp_nonce_field('meu-plugin-config'); ?> <input type="submit" name="submit" value="Salvar"> </form> </div> <?php } // Função para registrar as configurações do plugin function meu_plugin_personalizado_registrar_configuracoes() { register_setting('meu-plugin-config', 'meu-plugin-nome-formulario'); register_setting('meu-plugin-config', 'meu-plugin-horario-geração'); register_setting('meu-plugin-config', 'meu-plugin-email'); register_setting('meu-plugin-config', 'meu-plugin-sequencia-numerica'); } // Hook para adicionar o menu no painel lateral add_action('admin_menu', 'meu_plugin_personalizado_menu'); // Hook para registrar as configurações add_action('admin_init', 'meu_plugin_personalizado_registrar_configuracoes'); function gerarProximoNumeroSorteio($email) { // Obtém o último número de sorteio enviado $ultimoNumeroEnviado = get_option('ultimo-numero-enviado'); // Verifica se o último número de sorteio enviado é válido if ($ultimoNumeroEnviado === false || !is_numeric($ultimoNumeroEnviado)) { $ultimoNumeroEnviado = 0; } // Obtém a sequência numérica configurada $sequenciaNumerica = get_option('meu-plugin-sequencia-numerica'); $sequenciaNumerica = explode('-', $sequenciaNumerica); // Divide a sequência em um array // Verifica se a sequência numérica é válida if (count($sequenciaNumerica) === 2 && is_numeric($sequenciaNumerica[0]) && is_numeric($sequenciaNumerica[1])) { $inicioSequencia = intval($sequenciaNumerica[0]); $fimSequencia = intval($sequenciaNumerica[1]); // Verifica se o último número enviado está dentro da sequência configurada if ($ultimoNumeroEnviado >= $inicioSequencia && $ultimoNumeroEnviado < $fimSequencia) { // Obtém o horário de geração configurado $horarioGeracao = get_option('meu-plugin-horario-geração'); $horarioAtual = strtotime(current_time('Y-m-d H:i:s')); // Obtém o horário atual em segundos $horarioGeracao = strtotime(date('Y-m-d') . ' ' . $horarioGeracao . ':00'); // Obtém o horário de geração em segundos // Verifica se o horário atual é maior ou igual ao horário de geração configurado if ($horarioAtual >= $horarioGeracao) { // Reinicia a sequência numérica $proximoNumeroSorteio = $inicioSequencia; } else { // Obtém o próximo número de sorteio $proximoNumeroSorteio = $ultimoNumeroEnviado + 1; } // Armazena o próximo número de sorteio update_option('ultimo-numero-enviado', $proximoNumeroSorteio); // Verifica se o próximo número de sorteio está dentro da sequência if ($proximoNumeroSorteio < $inicioSequencia || $proximoNumeroSorteio >= $fimSequencia) { // Calcula o próximo número de sorteio dentro da sequência $proximoNumeroSorteio = $proximoNumeroSorteio % $fimSequencia + $inicioSequencia; // Armazena o próximo número de sorteio update_option('ultimo-numero-enviado', $proximoNumeroSorteio); } // Retorna o próximo número de sorteio return $proximoNumeroSorteio; } else { // Reinicia a sequência numérica $proximoNumeroSorteio = $inicioSequencia; // Armazena o próximo número de sorteio update_option('ultimo-numero-enviado', $proximoNumeroSorteio); // Retorna o próximo número de sorteio return $proximoNumeroSorteio; } } else { // Sequência numérica inválida, retorna o último número enviado + 1 $proximoNumeroSorteio = $ultimoNumeroEnviado + 1; // Armazena o próximo número de sorteio update_option('ultimo-numero-enviado', $proximoNumeroSorteio); // Retorna o próximo número de sorteio return $proximoNumeroSorteio; } } function foiEnviadoNasUltimas24Horas($email) { // Implementação para verificar se o e-mail foi enviado nas últimas 24 horas // Você pode usar bibliotecas ou funções para obter o cabeçalho completo do e-mail e analisá-lo para verificar a data de envio // Aqui está um exemplo simplificado usando a função time() do PHP para comparar a data de envio do e-mail $dataUltimoEnvio = strtotime(get_option('data-ultimo-envio')); // Obter a data do último envio $dataAtual = time(); // Obter a data atual $intervalo = 24 * 60 * 60; // 24 horas em segundos if ($dataAtual - $dataUltimoEnvio <= $intervalo) { return true; // O e-mail foi enviado nas últimas 24 horas } else { return false; // O e-mail não foi enviado nas últimas 24 horas } } function obterNumeroSorteio($email) { // Implementação para obter o número de sorteio correspondente ao e-mail // Você pode consultar um banco de dados ou outra fonte de dados para obter o número de sorteio // Aqui está um exemplo simplificado usando um array associativo para armazenar os números de sorteio por e-mail $numerosSorteio = array( '[email protected]' => 123, '[email protected]' => 456, // ... outros e-mails e números de sorteio ); if (array_key_exists($email, $numerosSorteio)) { return $numerosSorteio[$email]; // Retorna o número de sorteio correspondente ao e-mail } else { return false; // Retorna falso se o e-mail não tiver um número de sorteio correspondente } } function obterProximoNumeroSorteio() { // Implementação para obter o próximo número de sorteio da sequência numérica // Você pode consultar um banco de dados ou outra fonte de dados para obter a sequência numérica // Aqui está um exemplo simplificado usando uma variável global para armazenar o próximo número de sorteio // Verifica se a opção 'proximo-numero-sorteio' já existe if (get_option('proximo-numero-sorteio')) { $proximoNumeroSorteio = get_option('proximo-numero-sorteio'); $proximoNumeroSorteio++; // Incrementa o próximo número de sorteio } else { // Se a opção 'proximo-numero-sorteio' não existe, começa a sequência numérica a partir do número 1 $proximoNumeroSorteio = 1; } // Armazena o próximo número de sorteio update_option('proximo-numero-sorteio', $proximoNumeroSorteio); return $proximoNumeroSorteio; // Retorna o próximo número de sorteio } // Função para enviar o e-mail com os dados do formulário e o número de sorteio function enviarEmailSorteio($dados) { // Obtém o e-mail preenchido no formulário $emailFormulario = $dados['E-mail']; // Substitua 'E-mail' pelo nome do campo de e-mail no seu formulário // Gera o próximo número de sorteio $numeroSorteio = gerarProximoNumeroSorteio($emailFormulario); // Configurações do e-mail $to = get_option('meu-plugin-email'); // Obtém o e-mail das configurações do plugin $subject = 'Teste'; $message = "Seu número da sorte é o: $numeroSorteio\n\n"; // Adiciona os dados do formulário ao e-mail foreach ($dados as $key => $value) { $message .= "$key: $value\n"; } // Envia o e-mail para o endereço do formulário wp_mail($emailFormulario, $subject, $message); // Envia o e-mail para o endereço especificado na configuração do plugin wp_mail($to, $subject, $message); } // Hook para capturar o envio do formulário add_action('elementor_pro/forms/new_record', function($record, $handler) { $form_name = $record->get_form_settings('form_name'); $form_data = $record->get_formatted_data(); // Verifica se o formulário é o desejado if ($form_name === 'teste') { // Substitua pelo nome do seu formulário enviarEmailSorteio($form_data); // Envia o e-mail com os dados do formulário e o número de sorteio } }, 10, 2);

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!