Ninja Forms Field Keys abfragen

Bei der Arbeit mit Ninja Form Submissions ist es hilfreich, die Submissions per Field Key (statt ID) abzufragen. Die folgende Funktion gibt ein Array mit allen Key / ID-Mappings zurück:

public function pure_nf_get_field_keys()
{
	$form_id = 123;

	// Get all fields of the specified form
	$fields = Ninja_Forms()->form($form_id)->get_fields();
	
	// Initialize empty array
	$keys = array();
	
	// Iterate over fields
	foreach ($fields as $field_id => $field) {
		// Assign key => id
		$keys[ $field->get_setting('key') ] = $field->get_id();
	}
	
	// Order array by keys
	ksort($keys);
	
	// Return array
	return $keys;
}

In folgendem Beispiel frage ich eine Submission auf Basis von einem Code-Feld ab, das ein bestimmtes Passwort enthalten muss:

$password = 'my_secret';
$form_id = 123;

// Get field keys
$field_keys = pure_nf_get_field_keys();

// Get code field id		
$code_field_id = $this->fieldKeys['code'];

// Build where condition
$where_condition = array( $code_field_id => $password );

// Run the query for form with specified form ID
$matching_submissions = Ninja_Forms()->form($form_id)->get_subs($where_condition);

// Check, if there is a submission
if (array() == $matching_submissions) {
	wp_die('No matching submission found!');
}

// Get first submission
$submission = reset($matching_submissions);

Möchte ich nun beispielsweise den Wert des name Feldes und den berechneten Wert des result Feldes würde der Code wie folgt aussehen:

$name = $submission->get_field_value( $this->fieldKeys['name'] );
$result = $submission->get_extra_value( 'calculations' )[ 'result' ]['value'];

Schreibe einen Kommentar