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
80                 * @since 3.4.0
81                 * @since 4.4.0 The `$option` parameter was added.
82                 * @since 4.7.0 The `$passed_default` parameter was added to distinguish between a `false` value and the default parameter value.
83                 *
84                 * @param mixed  $default The default value to return if the option does not exist
85                 *                        in the database.
86                 * @param string $option  Option name.
87                 * @param bool   $passed_default Was `get_option()` passed a default value?
88                 */
89                return apply_filters( "default_option_{$option}", $default, $option, $passed_default );
90           }
91
92           $alloptions = wp_load_alloptions();
93
94           if ( isset( $alloptions[ $option ] ) ) {
95                $value = $alloptions[ $option ];
96           } else {
97                $value = wp_cache_get( $option, 'options' );
98
 
Line Code
105                          wp_cache_add( $option, $value, 'options' );
106                     } else { // Option does not exist, so we must cache its non-existence.
107                          if ( ! is_array( $notoptions ) ) {
108                               $notoptions = array();
109                          }
110                          $notoptions[ $option ] = true;
111                          wp_cache_set( 'notoptions', $notoptions, 'options' );
112
113                          /** This filter is documented in wp-includes/option.php */
114                          return apply_filters( "default_option_{$option}", $default, $option, $passed_default );
115                     }
116                }
117           }
118      } else {
119           $suppress = $wpdb->suppress_errors();
120           $row      = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );
121           $wpdb->suppress_errors( $suppress );
122           if ( is_object( $row ) ) {
123                $value = $row->option_value;
124           } else {
125                /** This filter is documented in wp-includes/option.php */
126                return apply_filters( "default_option_{$option}", $default, $option, $passed_default );
127           }
128      }
129
130      // If home is not set, use siteurl.
131      if ( 'home' == $option && '' == $value ) {
132           return get_option( 'siteurl' );
133      }
134
135      if ( in_array( $option, array( 'siteurl', 'home', 'category_base', 'tag_base' ) ) ) {
 
Line Code
351       * unnecessary database calls for otherwise identical object instances.
352       *
353       * See https://core.trac.wordpress.org/ticket/38903
354       */
355      if ( $value === $old_value || maybe_serialize( $value ) === maybe_serialize( $old_value ) ) {
356           return false;
357      }
358
359      /** This filter is documented in wp-includes/option.php */
360      if ( apply_filters( "default_option_{$option}", false, $option, false ) === $old_value ) {
361           // Default setting for new options is 'yes'.
362           if ( null === $autoload ) {
363                $autoload = 'yes';
364           }
365
366           return add_option( $option, $value, '', $autoload );
367      }
368
369      $serialized_value = maybe_serialize( $value );
 
Line Code
477      }
478
479      $value = sanitize_option( $option, $value );
480
481      // Make sure the option doesn't already exist.
482      // We can check the 'notoptions' cache before we ask for a DB query.
483      $notoptions = wp_cache_get( 'notoptions', 'options' );
484      if ( ! is_array( $notoptions ) || ! isset( $notoptions[ $option ] ) ) {
485           /** This filter is documented in wp-includes/option.php */
486           if ( apply_filters( "default_option_{$option}", false, $option, false ) !== get_option( $option ) ) {
487                return false;
488           }
489      }
490
491      $serialized_value = maybe_serialize( $value );
492      $autoload         = ( 'no' === $autoload || false === $autoload ) ? 'no' : 'yes';
493
494      /**
495       * Fires before an option is added.