Filter uncanny-automator

automator_advanced_ads_validate_trigger_meta_pieces_save

Filters Advanced Ads trigger meta pieces before saving to validate data.

add_filter( 'automator_advanced_ads_validate_trigger_meta_pieces_save', $callback, 10, 1 );

Description

Fires when Advanced Ads trigger meta data is being validated for saving. Developers can modify the array of allowed meta pieces by adding or removing validation codes. This allows for custom validation of Advanced Ads trigger meta data before it's saved.


Usage

add_filter( 'automator_advanced_ads_validate_trigger_meta_pieces_save', 'your_function_name', 10, 1 );

Parameters

$args (mixed)
This parameter contains an array of specific meta piece identifiers that are validated before saving trigger meta data for Advanced Ads.

Return Value

The filtered value.


Examples

/**
 * Example of how to use the automator_advanced_ads_validate_trigger_meta_pieces_save filter.
 * This example adds an additional validation for a specific Advanced Ads token,
 * ensuring that if the 'AD_STATUS_SET_CODE' is present, a valid ad object is also provided.
 *
 * @param array $trigger_meta_validations An array of meta piece codes that require validation.
 * @param array $args The arguments passed to the save_token_data function.
 * @return array The modified array of meta piece codes for validation.
 */
function my_automator_advanced_ads_validate_trigger_meta_pieces_save( $trigger_meta_validations, $args ) {
    // Check if we are dealing with the 'AD_STATUS_SET_CODE' and if trigger_args is present.
    if ( in_array( 'AD_STATUS_SET_CODE', $trigger_meta_validations ) && isset( $args['trigger_args'] ) ) {
        // Ensure that if 'AD_STATUS_SET_CODE' is being saved, there's at least one ad object in trigger_args.
        if ( empty( $args['trigger_args'] ) || !is_array( $args['trigger_args'][0] ) || !isset( $args['trigger_args'][0]['ID'] ) ) {
            // In a real scenario, you might want to add an error notice here or prevent saving.
            // For this example, we'll just return the validations as is, but the underlying
            // automator function would likely handle the missing ad object.
            error_log( 'Automator: Missing Ad object when saving AD_STATUS_SET_CODE trigger.' );
        }
    }

    // Always return the potentially modified array of validations.
    return $trigger_meta_validations;
}
add_filter( 'automator_advanced_ads_validate_trigger_meta_pieces_save', 'my_automator_advanced_ads_validate_trigger_meta_pieces_save', 10, 2 );

Placement

This code should be placed in the functions.php file of your active theme, a custom plugin, or using a code snippets plugin.


Source Code

src/integrations/advanced-ads/tokens/advanced-ads-tokens.php:33

public function save_token_data( $args, $trigger ) {
		if ( ! isset( $args['trigger_args'] ) || ! isset( $args['entry_args']['code'] ) ) {
			return;
		}

		$trigger_meta_validations = apply_filters(
			'automator_advanced_ads_validate_trigger_meta_pieces_save',
			array( 'AD_STATUS_SET_CODE' ),
			$args
		);

		if ( in_array( $args['entry_args']['code'], $trigger_meta_validations ) ) {
			$ad                = array_shift( $args['trigger_args'] );
			$trigger_log_entry = $args['trigger_entry'];
			if ( ! empty( $ad ) ) {
				Automator()->db->token->save( 'save_ad', maybe_serialize( $ad ), $trigger_log_entry );
			}
		}
	}


Scroll to Top