Come aggiungere un anno alla data di inserimento

Volete aggiungere automaticamente un anno alla data di inserimento dei vostri moduli? In questo tutorial vi guideremo attraverso il processo di impostazione di un modulo per volontari, completo di data di inizio. Inoltre, vi mostreremo come generare dinamicamente una data di scadenza che anticipi di un anno la data di iscrizione, utilizzando PHP. Questo comporta la creazione di campi nascosti per memorizzare sia la data di inizio del volontario sia la data di scadenza calcolata. Tuffiamoci!

Creazione del modulo

Inizieremo creando un nuovo modulo. Se avete bisogno di assistenza per la creazione di un nuovo modulo, consultate questa documentazione.

Per lo scopo di questa esercitazione, creeremo un modulo di iscrizione per i volontari. Questo modulo acquisirà le varie informazioni necessarie per i volontari, oltre a due campi nascosti che memorizzeranno la data di inizio, che è la data di ingresso dell'iscrizione, e una data di scadenza per il volontario, poiché vorremo che il volontario si iscriva di nuovo ogni anno.

iniziare creando il modulo e aggiungendo i campi

Definizione dei campi nascosti

All'interno del nostro modulo, abbiamo due campi nascosti. Uno serve a memorizzare le informazioni sulla data esatta di inserimento e il secondo è quello in cui prenderemo la data di inserimento, aggiungeremo un anno e memorizzeremo questi dati nel secondo campo nascosto, che sarà una data di scadenza.

aggiungete 2 campi nascosti al vostro modulo che conterranno la data di invio e la data che creeremo nel nostro snippet per la data di scadenza

Aggiunta di un anno alla data di inserimento in WPForms

Ora è il momento di aggiungere lo snippet al vostro sito. Se avete bisogno di assistenza su come e dove aggiungere gli snippet al vostro sito, consultate il nostro tutorial su questo argomento.

/**
 * 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 );

Nello snippet qui sopra, è importante notare che c'è un riferimento all'ID del modulo(2189) e alcuni riferimenti all'ID del campo(2, 30 e 33). È necessario aggiornare ciascuno di questi numeri ID per farli corrispondere ai propri ID di modulo e di campo. Se avete bisogno di aiuto per trovare i numeri ID, consultate questa guida.

Nello snippet qui sopra, la nostra funzione inizia con l'assicurarsi che l'ID del modulo corrisponda a 2189Se non lo fa, questo snippet non verrà eseguito.

Nella prossima parte dello snippet, controlliamo solo per assicurarci che l'elemento Nome (questo è l'ID del campo) 2) non è vuoto. Poiché abbiamo impostato il nostro modulo in modo da rendere il campo Nome è un campo obbligatorio, sappiamo che non sarà mai vuoto, ma lo abbiamo comunque inserito come controllo di validazione.

Una volta proseguito il nostro snippet, imposteremo il primo campo nascosto (campo ID 30) alla data corrente, che corrisponde alla data di inserimento dell'invio.

Infine, si prenderà la data corrente, si aggiungerà un anno e si collocherà la nuova data all'interno del secondo campo nascosto (campo ID 33).

Ora, quando si visualizza la voce, è possibile vedere chiaramente la data originale di invio del modulo e la nuova data che sarà la data di scadenza dell'invio.

con lo snippet al suo posto, si vedrà la data di ingresso nel primo campo nascosto e la nuova data che abbiamo creato aggiungendo 1 anno alla data di ingresso per la scadenza del nostro volontario

Si può anche seguire la guida in questa documentazione per modificare la visualizzazione predefinita della schermata delle voci, in modo da poter vedere facilmente queste date quando si visualizzano tutte le voci.

modificando la visualizzazione predefinita delle voci, è possibile vedere facilmente i campi nascosti con le date mentre si visualizzano tutte le voci.

Ed ecco fatto! Avete aggiunto e memorizzato con successo una nuova data all'interno delle vostre voci, esattamente un anno dopo la data di inserimento. Volete anche memorizzare i valori dei campi nelle vostre voci? Consultate il nostro tutorial su Come memorizzare i valori di campo nelle voci di WPForms.

Azione di riferimento

wpforms_process_complete