Skip to main content

Airtable

Data filter

Allows modifying form field data before it's shown in the Block Editor or output on the frontend.

Useful if, for example, you want to ensure that all fields fit into a 2-column layout.

Overrides any Block Editor changes!

add_filter('es_forms_integrations_airtable_data', 'getIntegrationFilterData', 10, 2);

/**
* Manipulate form fields data before it is sent to the Block Editor.
*
* @param array<mixed> $data Form fields data.
* @param string $formId Form ID.
*
* @return array<mixed>
*/
function getIntegrationFilterData(array $data, string $formId): array
{
foreach ($data as $index => $field) {
$component = $field['component'] ?? '';

if (!$component) {
continue;
}

$name = $field["{$component}Name"] ?? '';

if (!$name) {
continue;
}

switch ($name) {
case 'firstname':
case 'lastname':
$data[$index]["{$component}FieldWidthMobile"] = 12;
$data[$index]["{$component}FieldWidthLarge"] = 6;
$data[$index]["{$component}DisabledOptions"] = array_merge(
$data[$index]["{$component}DisabledOptions"],
[
"{$component}FieldWidthMobile",
"{$component}FieldWidthLarge",
]
);
break;
}
}

return $data;
}

Order filter

Forces a form field order, regardless of how it's set in the Block editor. Fields not modified through the filter will use order in which they're set in the Block editor.

Not all fields need to have an order defined. For example, you may want to make sure firstname, lastname and email are displayed first, but other fields follow their Block editor order.

add_filter('es_forms_integrations_airtable_order', 'getIntegrationOrder');

/**
* Forces form field order for the provided fields. For other fields, Block editor order is used.
*
* @return array<string>
*/
function getIntegrationOrder(): array
{
return [
'firstname',
'lastname',
'email',
];
}

Pre-post ID filter

Allows updating item IDs sent to external integrations to which the form data is sent.

add_filter('es_forms_integrations_airtable_pre_post_id', 'getIntegrationPrePostId', 10, 3);

/**
* Modifies integration item ID.
*
* @param string $itemId Integration item ID.
* @param array<mixed> $params Params to be sent to the integration.
* @param string $formId Form ID.
*
* @return array<mixed>
*/
function getIntegrationPrePostId(string $itemId, array $params, string $formId): array
{
return $itemId;
}

Pre-post parameters filter

Allows modifying form field data before it's sent to external integration. Useful if you want to make values derived from the sent data, or add new fields.

add_filter('es_forms_integrations_airtable_pre_post_params', 'getIntegrationPrePostParams', 10, 2);

/**
* Modifies form field data before it's sent to external integration.
*
* @param array<string, mixed> $params Array of params.
* @param string $formId Form ID.
*
* @return array<string, mixed>
*/
function getIntegrationPrePostParams(array $params, string $formId): array
{
$formSubmissionPageLt = $params['form_submission_page_lt']['value'] ?? '';

if ($formSubmissionPageLt) {
$params['ib-submission-source'] = [
'name' => 'ib-submission-source',
'value' => $formSubmissionPageLt,
'type' => 'text',
'internalType' => '',
];
}

return $params;
}