ご注意!

この記事には PHP コードが含まれており、開発者を対象としています。このコードは便宜上提供していますが、コードのカスタマイズやサードパーティの開発についてはサポートを提供していません。

追加のガイダンスについては、WPBeginner の カスタムコードの追加方法に関するチュートリアル を参照してください。

閉じる

エントリー日付に年を追加する方法

フォーム送信のエントリー日に年を自動的に追加したいとお考えですか? このチュートリアルでは、ボランティア向けのフォームのセットアップ方法、開始日の設定方法を順を追って説明します。さらに、PHPを使用して、サインアップ日から1年後の有効期限を動的に生成する方法もご紹介します。これには、ボランティアの開始日と計算された有効期限の両方を格納するための非表示フィールドの作成が含まれます。早速始めましょう!

フォームの作成

新しいフォームの作成から始めます。新しいフォームの作成方法についてサポートが必要な場合は、こちらのドキュメントをご覧ください

このチュートリアルでは、ボランティアのサインアップフォームを作成します。このフォームは、ボランティアに必要なさまざまな情報と、開始日(送信のエントリー日)およびボランティアの有効期限を格納する2つの非表示フィールドをキャプチャします。ボランティアは毎年再登録する必要があるためです。

フォームを作成し、フィールドを追加することから始めます

非表示フィールドの定義

フォーム内には、2つの非表示フィールドがあります。1つは正確なエントリー情報を格納するため、もう1つはエントリー日に1年を追加して、そのデータを有効期限となる2番目の非表示フィールドに格納するためです。

送信日と、スニペットで作成する有効期限の日付を保持する2つの非表示フィールドをフォームに追加します

WPFormsのエントリー日に年を追加する

次に、スニペットをサイトに追加します。スニペットをサイトに追加する方法と場所についてサポートが必要な場合は、この件に関するチュートリアルをご覧ください

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

上記のスニペットでは、フォームID(2189)といくつかのフィールドID(2、30、33)への参照に注意することが重要です。これらのID番号は、ご自身のフォームとフィールドIDに合わせて更新する必要があります。ID番号の検索方法についてサポートが必要な場合は、こちらのチュートリアルをご覧ください

上記のスニペットでは、フォームIDが2189と一致することを確認することから関数が始まります。一致しない場合、このスニペットは実行されません。

スニペットの次の部分では、名前フィールド(フィールドID 2)が空でないことを確認しています。フォームの設定で名前フィールドを必須フィールドに設定しているため、これは決して空にならないことを知っていますが、それでも検証チェックとして配置しています。

スニペットを進めると、最初の非表示フィールド(フィールドID 30)を現在の日付に設定します。これは送信のエントリー日と同じです。

そして最後に、現在の日付を取得し、1年を追加して、その新しい日付を2番目の非表示フィールド(フィールドID 33)に配置します。

これで、エントリーを表示すると、フォーム送信の元の日付と、送信の有効期限となる新しい日付をはっきりと確認できます。

スニペットを配置すると、最初の非表示フィールドにエントリー日が表示され、ボランティアの有効期限のためにエントリー日に1年を追加して作成した新しい日付が表示されます

このドキュメントのガイドに従って、エントリー画面のデフォルトビューを変更し、すべてエントリーを表示する際にこれらの日付を簡単に確認できるようにすることもできます。

エントリーのデフォルトビューを変更することで、すべてのエントリーを表示しながら、日付を含む非表示フィールドを簡単に確認できます。

これで完了です!エントリー内に、エントリー日からちょうど1年後の新しい日付を正常に追加および保存しました。エントリーにフィールド値も保存しますか?WPFormsエントリーにフィールド値を保存する方法のチュートリアルをご覧ください。

参照アクション

wpforms_process_complete