Menu Adam R Brown

WP hooks navigation: Home/browseActions indexFilters index

Source View: default_option_{$option}

To save our bandwidth, we show only a snippet of code around each occurence of the hook. View complete file in SVN (without highlighting).

Understanding Source Code

The best way to understand what a hook does is to look at where it occurs in the source code.

Remember, this hook may occur in more than one file. Moreover, the hook's context may change from version to version.

Source View

This hook occurs 5 times in this file.

Line Code
155                 * @since 3.4.0
156                 * @since 4.4.0 The `$option` parameter was added.
157                 * @since 4.7.0 The `$passed_default` parameter was added to distinguish between a `false` value and the default parameter value.
158                 *
159                 * @param mixed  $default The default value to return if the option does not exist
160                 *                        in the database.
161                 * @param string $option  Option name.
162                 * @param bool   $passed_default Was `get_option()` passed a default value?
163                 */
164                return apply_filters( "default_option_{$option}", $default, $option, $passed_default );
165           }
166
167           $alloptions = wp_load_alloptions();
168
169           if ( isset( $alloptions[ $option ] ) ) {
170                $value = $alloptions[ $option ];
171           } else {
172                $value = wp_cache_get( $option, 'options' );
173
 
Line Code
181                     } else { // Option does not exist, so we must cache its non-existence.
182                          if ( ! is_array( $notoptions ) ) {
183                               $notoptions = array();
184                          }
185
186                          $notoptions[ $option ] = true;
187                          wp_cache_set( 'notoptions', $notoptions, 'options' );
188
189                          /** This filter is documented in wp-includes/option.php */
190                          return apply_filters( "default_option_{$option}", $default, $option, $passed_default );
191                     }
192                }
193           }
194      } else {
195           $suppress = $wpdb->suppress_errors();
196           $row      = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );
197           $wpdb->suppress_errors( $suppress );
198
199           if ( is_object( $row ) ) {
200                $value = $row->option_value;
201           } else {
202                /** This filter is documented in wp-includes/option.php */
203                return apply_filters( "default_option_{$option}", $default, $option, $passed_default );
204           }
205      }
206
207      // If home is not set, use siteurl.
208      if ( 'home' === $option && '' === $value ) {
209           return get_option( 'siteurl' );
210      }
211
212      if ( in_array( $option, array( 'siteurl', 'home', 'category_base', 'tag_base' ), true ) ) {
 
Line Code
457       * unnecessary database calls for otherwise identical object instances.
458       *
459       * See https://core.trac.wordpress.org/ticket/38903
460       */
461      if ( $value === $old_value || maybe_serialize( $value ) === maybe_serialize( $old_value ) ) {
462           return false;
463      }
464
465      /** This filter is documented in wp-includes/option.php */
466      if ( apply_filters( "default_option_{$option}", false, $option, false ) === $old_value ) {
467           // Default setting for new options is 'yes'.
468           if ( null === $autoload ) {
469                $autoload = 'yes';
470           }
471
472           return add_option( $option, $value, '', $autoload );
473      }
474
475      $serialized_value = maybe_serialize( $value );
 
Line Code
613
614      $value = sanitize_option( $option, $value );
615
616      // Make sure the option doesn't already exist.
617      // We can check the 'notoptions' cache before we ask for a DB query.
618      $notoptions = wp_cache_get( 'notoptions', 'options' );
619
620      if ( ! is_array( $notoptions ) || ! isset( $notoptions[ $option ] ) ) {
621           /** This filter is documented in wp-includes/option.php */
622           if ( apply_filters( "default_option_{$option}", false, $option, false ) !== get_option( $option ) ) {
623                return false;
624           }
625      }
626
627      $serialized_value = maybe_serialize( $value );
628      $autoload         = ( 'no' === $autoload || false === $autoload ) ? 'no' : 'yes';
629
630      /**
631       * Fires before an option is added.