Ninja Forms: eigenen MergeTag erstellen

Damit beim Versand von einem E-Mail z.B. ein Datum aus einem ACF-Feld umformatiert werden kann, muss ein eigener MergeTag erstellt werden.

WICHTIG: bei Zeile 6 muss die Action “nf_init” aufgerufen werden, nicht wie in der Dokumentation die Action “ninja_forms_loaded”

Link zu Doku: https://developer.ninjaforms.com/codex/creating-merge-tags/

/*
 * Register the new merge tag class on the `nf_init` hook.
 * not ninja_forms_loaded Action
 */
add_action( 'nf_init', 'phprog_register_merge_tags' );
function phprog_register_merge_tags() {
	Ninja_Forms()->merge_tags['phprog_merge_tags'] = new PHPROG_MergeTags();
}

class PHPROG_MergeTags extends NF_Abstracts_MergeTags {
	/*
	 * The $id property should match the array key where the class is registered.
	 */
	protected $id = 'phprog_merge_tags';

	public function __construct() {
		parent::__construct();
		/* Translatable display name for the group. */
		$this->title = __( 'Kunde', 'ninja-forms' );
		/* Individual tag registration. */
		$this->merge_tags = apply_filters( 'ninja_forms_register_user_settings', array(
			'veranstaltungsdatum' => array(
				'id'       => 'veranstaltungsdatum',
				'tag'      => '{kunde:veranstaltungsdatum}', // The tag to be  used.
				'label'    => __( 'Veranstaltungsdatum', 'phprog' ), // Translatable label for tag selection.
				'callback' => 'veranstaltungsdatum' // Class method for processing the tag. See below.
			),
		) );
	}

	/**
	 * The callback method for the {kunde:veranstaltungsdatum} merge tag.
	 * @return string
	 */
	public function veranstaltungsdatum() {
		$orig  = get_post_meta( $this->post_id(), 'datum', true );
		$year  = substr( $orig, 0, 4 );
		$month = substr( $orig, 4, 2 );
		$day   = substr( $orig, 5, 2 );

		return $day . '.' . $month . '.' . $year;
	}

	/**
	 * Added post_id to Class
	 *
	 * @return bool|int
	 */
	protected function post_id() {
		global $post;
		if ( is_admin() && defined( 'DOING_AJAX' ) && DOING_AJAX ) {
			// If we are doing AJAX, use the referer to get the Post ID.
			$post_id = url_to_postid( wp_get_referer() );
		} elseif ( $post ) {
			$post_id = $post->ID;
		} else {
			return false; // No Post ID found.
		}
		return $post_id;
	}
}

Ninja Forms: eigenen MergeTag erstellen