migrations = array( new Migration_Field_Values( $logger, $post_selections_settings_storage, fn ( Cpt_Settings $cpt_settings ) => self::migrate_item( $cpt_settings ) ), ); } protected static function migrate_item( Cpt_Settings $cpt_settings ): bool { if ( $cpt_settings instanceof Post_Selection_Settings ) { return self::set_filter_value_types( $cpt_settings ); } return false; } protected static function set_filter_value_types( Post_Selection_Settings $selection ): bool { $has_changes = false; foreach ( $selection->tax_filter->rules as $rule ) { foreach ( $rule->taxonomies as $taxonomy ) { $has_changes = true; $taxonomy->value_type = strlen( $taxonomy->dynamic_term ) > 0 ? Tax_Field_Settings::VALUE_TYPE_DYNAMIC : Tax_Field_Settings::VALUE_TYPE_STATIC; } } foreach ( $selection->meta_filter->rules as $rule ) { foreach ( $rule->fields as $field ) { $has_changes = true; // mark all previous values as literal. // magic insertions within will keep working as value agreements have not changed. $field->value_type = Meta_Field_Settings::VALUE_TYPE_LITERAL; } } return $has_changes; } }