Como adicionar um ano à data de entrada

Deseja adicionar automaticamente um ano à data de entrada dos envios de formulários? Neste tutorial, vamos orientá-lo no processo de configuração de um formulário para voluntários, completo com uma data de início. Além disso, mostraremos como gerar dinamicamente uma data de expiração que é um ano antes da data de inscrição usando PHP. Isso envolve a criação de campos ocultos para armazenar a data de início do voluntário e a data de expiração calculada. Vamos nos aprofundar no assunto!

Criando o formulário

Vamos começar criando um novo formulário. Se precisar de ajuda para criar um novo formulário, consulte esta documentação.

Para o propósito deste tutorial, estamos criando um formulário de inscrição de voluntário. Esse formulário capturará as várias informações necessárias para os voluntários, bem como dois campos ocultos que armazenarão a data de início, que é a data de entrada do envio, bem como uma data de expiração para o voluntário, já que queremos que o voluntário se inscreva novamente a cada ano.

Comece criando seu formulário e adicionando seus campos

Definição dos campos ocultos

Em nosso formulário, temos dois campos ocultos. Um deles é para armazenar as informações da data exata de entrada e o segundo é onde pegaremos a data de entrada, adicionaremos um ano e armazenaremos esses dados dentro do segundo campo oculto, que será uma data de expiração.

adicione 2 campos ocultos ao formulário que conterão a data de envio, bem como a data que criaremos em nosso snippet para a data de expiração

Adição de um ano à data de entrada do WPForms

Agora é hora de adicionar o snippet ao seu site. Se precisar de ajuda para saber como e onde adicionar snippets ao seu site, consulte nosso tutorial sobre esse assunto.

/**
 * Add one year to the entry date and store this date inside a hidden field
 *
 * @link   https://wpforms.com/developers/how-to-add-a-year-to-the-wpforms-entry-date/
 */
 
function wpf_dev_process_complete( $fields, $entry, $form_data, $entry_id ) {
      
    // Optional, you can limit to specific forms. Below, we restrict output to
    // form #2189.
    if ( absint( $form_data[ 'id' ] ) !== 2189 ) {
        return;
    }
     
    // Get the full entry object
    $entry = wpforms()->entry->get( $entry_id );
 
    // Fields are in JSON, so we decode to an array
    $entry_fields = json_decode( $entry->fields, true );
	
    // Checking to make sure Name field (ID 2) is not empty
	if (isset( $fields[2][ 'value' ] )) {
		
		// Set the date to today's date so the Entry Date is recorded
        // on the first hidden field in the form
        // Remember to update the 30 to match the field ID of your form for your first hidden field
		$entry_fields[30][ 'value' ] = date('m/d/Y');

        // Set the date format and store the current date in a variable
		$setDate = date('m/d/Y');
		$date = strtotime($setDate);
		
		// Get the date set above and add 1 year to this date
        $new_date = strtotime('+ 1 year', $date);
		
		// Store this new date inside the hidden field ID 
		// Remember to update the 33 to match the field ID of your form for your second hidden field
		$entry_fields[33][ 'value' ] = date('m/d/Y', $new_date);
			
	}

    // Convert back to json
    $entry_fields = json_encode( $entry_fields );
 
    // Save changes
    wpforms()->entry->update( $entry_id, array( 'fields' => $entry_fields ), '', '', array( 'cap' => false ) );
 
}
add_action( 'wpforms_process_complete', 'wpf_dev_process_complete', 10, 4 );

No snippet acima, é importante observar que há uma referência de ID de formulário(2189), bem como algumas referências de ID de campo(2, 30 e 33). Você precisará atualizar cada um desses números de ID para que correspondam aos seus próprios IDs de formulário e campo. Se precisar de ajuda para saber onde encontrar seus números de ID, consulte este tutorial.

No trecho acima, nossa função começa verificando se o ID do formulário corresponde 2189Se isso não acontecer, esse snippet não será executado.

Na próxima parte do snippet, estamos verificando apenas para garantir que o Nome (essa é a ID do campo 2) não está vazio. Como configuramos nosso formulário para fazer o Nome um campo obrigatório, sabemos que ele nunca estará vazio, mas, mesmo assim, o colocamos como uma verificação de validação.

Quando continuarmos com nosso snippet, definiremos o primeiro campo oculto (ID do campo 30) para a data atual, que é a mesma que a data de entrada do envio.

Por fim, pegaremos a data atual, adicionaremos um ano e colocaremos essa nova data dentro do segundo campo oculto (ID do campo 33).

E agora, quando você visualizar a entrada, poderá ver claramente a data original do envio do formulário, bem como a nova data que será a data de expiração do envio.

Com o snippet no lugar, você verá a data de entrada no primeiro campo oculto e a nova data que criamos adicionando 1 ano à data de entrada para a data de expiração do nosso voluntário

Você pode até mesmo seguir o guia nesta documentação para alterar a visualização padrão da tela de entradas, de modo que possa ver facilmente essas datas ao visualizar todas as entradas.

Ao alterar a visualização padrão de suas entradas, você pode ver facilmente os campos ocultos com as datas enquanto visualiza todas as entradas.

E é isso! Você adicionou e armazenou com sucesso uma nova data dentro de suas entradas que é exatamente um ano a partir da data de entrada. Você também gostaria de armazenar valores de campo em suas entradas? Confira nosso tutorial sobre Como armazenar valores de campo na entrada do WPForms.

Ação de referência

wpforms_process_complete