Current Time Gravity Forms Merge Tags

The built-in Gravity Forms merge tags include {date_mdy} and {date_dmy}, which are useful for setting the default values of Date fields, but there aren’t any for Time fields. This snippet adds three merge tags for that:

  • {current_hour}
  • {current_minute}
  • {current_am_pm}

Note that the server’s clock and site’s timezone setting are used, not the client’s.

Screenshot of Gravity Forms Time field merge tags

<?php
add_filter( 'gform_replace_merge_tags', 'djb_gform_replace_merge_tags', 10, 7 );
/**
 * Replace custom merge tags.
 *
 * @link https://www.gravityhelp.com/documentation/article/gform_replace_merge_tags/
 *
 * @param string  $text Current text in which merge tags are being replaced.
 * @param object  $form Current Form object.
 * @param object  $entry Current Entry object.
 * @param boolean $url_encode Whether or not to encode any URLs found in the replaced value.
 * @param boolean $esc_html Whether or not to encode HTML found in the replaced value.
 * @param boolean $nl2br Whether or not to convert newlines to break tags.
 * @param string  $format Determines how the value should be formatted. Default is html.
 * @return string Modified data.
 */
function djb_gform_replace_merge_tags( $text, $form, $entry, $url_encode, $esc_html, $nl2br, $format ) {
	if ( strpos( $text, '{current_hour}' ) !== false ) {
		$text = str_replace( '{current_hour}', current_time( 'g' ), $text );
	}
	if ( strpos( $text, '{current_minute}' ) !== false ) {
		$text = str_replace( '{current_minute}', current_time( 'i' ), $text );
	}
	if ( strpos( $text, '{current_am_pm}' ) !== false ) {
		$text = str_replace( '{current_am_pm}', current_time( 'A' ), $text );
	}
	return $text;
}

Leave a Reply

Your email address will not be published. Required fields are marked *