Tribe__Settings::save()
Save the settings.
Return
(void)
Source
File: src/Tribe/Settings.php
public function save() { // some hooks do_action( 'tribe_settings_save' ); do_action( 'tribe_settings_save_tab_' . $this->currentTab ); // we'll need this later $parent_options = array(); /** * loop through each validated option and either * save it as is or figure out its parent option ID * (in that case, it's a serialized option array and * will be saved in the next loop) */ if ( ! empty( $this->validated ) ) { foreach ( $this->validated as $field_id => $validated_field ) { // get the value and filter it $value = $validated_field->value; $value = apply_filters( 'tribe_settings_save_field_value', $value, $field_id, $validated_field ); // figure out the parent option [could be set to false] and filter it if ( is_network_admin() ) { $parent_option = ( isset( $validated_field->field['parent_option'] ) ) ? $validated_field->field['parent_option'] : Tribe__Main::OPTIONNAMENETWORK; } if ( ! is_network_admin() ) { $parent_option = ( isset( $validated_field->field['parent_option'] ) ) ? $validated_field->field['parent_option'] : Tribe__Main::OPTIONNAME; } $parent_option = apply_filters( 'tribe_settings_save_field_parent_option', $parent_option, $field_id ); $network_option = isset( $validated_field->field['network_option'] ) ? (bool) $validated_field->field['network_option'] : false; // some hooks do_action( 'tribe_settings_save_field', $field_id, $value, $validated_field ); do_action( 'tribe_settings_save_field_' . $field_id, $value, $validated_field ); if ( ! $parent_option ) { if ( $network_option || is_network_admin() ) { update_site_option( $field_id, $value ); } else { update_option( $field_id, $value ); } } else { // set the parent option $parent_options[ $parent_option ][ $field_id ] = $value; } } } /** * loop through parent option arrays * and save them * NOTE: in the case of the main option Tribe Options, * this will save using the Tribe__Settings_Manager::set_options method. */ foreach ( $parent_options as $option_id => $new_options ) { // get the old options if ( is_network_admin() ) { $old_options = (array) get_site_option( $option_id ); } else { $old_options = (array) get_option( $option_id ); } // set the options by parsing old + new and filter that $options = apply_filters( 'tribe_settings_save_option_array', wp_parse_args( $new_options, $old_options ), $option_id ); if ( $option_id == Tribe__Main::OPTIONNAME ) { // save using the Tribe__Settings_Manager method Tribe__Settings_Manager::set_options( $options ); } elseif ( $option_id == Tribe__Main::OPTIONNAMENETWORK ) { Tribe__Settings_Manager::set_network_options( $options ); } else { // save using regular WP method if ( is_network_admin() ) { update_site_option( $option_id, $options ); } else { update_option( $option_id, $options ); } } } do_action( 'tribe_settings_after_save' ); do_action( 'tribe_settings_after_save_' . $this->currentTab ); remove_action( 'shutdown', array( $this, 'deleteOptions' ) ); add_option( 'tribe_settings_sent_data', $_POST ); add_option( 'tribe_settings_errors', $this->errors ); add_option( 'tribe_settings_major_error', $this->major_error ); wp_redirect( esc_url_raw( add_query_arg( array( 'saved' => true ), $this->url ) ) ); exit; }
Changelog
Version | Description |
---|---|
4.15.0 | Introduced. |