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
71                 * @since 3.4.0
72                 * @since 4.4.0 The `$option` parameter was added.
73                 * @since 4.7.0 The `$passed_default` parameter was added to distinguish between a `false` value and the default parameter value.
74                 *
75                 * @param mixed  $default The default value to return if the option does not exist
76                 *                        in the database.
77                 * @param string $option  Option name.
78                 * @param bool   $passed_default Was `get_option()` passed a default value?
79                 */
80                return apply_filters( "default_option_{$option}", $default, $option, $passed_default );
81           }
82
83           $alloptions = wp_load_alloptions();
84
85           if ( isset( $alloptions[$option] ) ) {
86                $value = $alloptions[$option];
87           } else {
88                $value = wp_cache_get( $option, 'options' );
89
 
Line Code
96                          wp_cache_add( $option, $value, 'options' );
97                     } else { // option does not exist, so we must cache its non-existence
98                          if ( ! is_array( $notoptions ) ) {
99                                $notoptions = array();
100                          }
101                          $notoptions[$option] = true;
102                          wp_cache_set( 'notoptions', $notoptions, 'options' );
103
104                          /** This filter is documented in wp-includes/option.php */
105                          return apply_filters( 'default_option_' . $option, $default, $option, $passed_default );
106                     }
107                }
108           }
109      } else {
110           $suppress = $wpdb->suppress_errors();
111           $row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );
112           $wpdb->suppress_errors( $suppress );
113           if ( is_object( $row ) ) {
114                $value = $row->option_value;
115           } else {
116                /** This filter is documented in wp-includes/option.php */
117                return apply_filters( 'default_option_' . $option, $default, $option, $passed_default );
118           }
119      }
120
121      // If home is not set use siteurl.
122      if ( 'home' == $option && '' == $value )
123           return get_option( 'siteurl' );
124
125      if ( in_array( $option, array('siteurl', 'home', 'category_base', 'tag_base') ) )
126           $value = untrailingslashit( $value );
 
Line Code
294       * @param mixed  $old_value The old option value.
295       */
296      $value = apply_filters( 'pre_update_option', $value, $option, $old_value );
297
298      // If the new and old values are the same, no need to update.
299      if ( $value === $old_value )
300           return false;
301
302      /** This filter is documented in wp-includes/option.php */
303      if ( apply_filters( 'default_option_' . $option, false, $option, false ) === $old_value ) {
304           // Default setting for new options is 'yes'.
305           if ( null === $autoload ) {
306                $autoload = 'yes';
307           }
308
309           return add_option( $option, $value, '', $autoload );
310      }
311
312      $serialized_value = maybe_serialize( $value );
 
Line Code
415      if ( is_object($value) )
416           $value = clone $value;
417
418      $value = sanitize_option( $option, $value );
419
420      // Make sure the option doesn't already exist. We can check the 'notoptions' cache before we ask for a db query
421      $notoptions = wp_cache_get( 'notoptions', 'options' );
422      if ( !is_array( $notoptions ) || !isset( $notoptions[$option] ) )
423           /** This filter is documented in wp-includes/option.php */
424           if ( apply_filters( 'default_option_' . $option, false, $option, false ) !== get_option( $option ) )
425                return false;
426
427      $serialized_value = maybe_serialize( $value );
428      $autoload = ( 'no' === $autoload || false === $autoload ) ? 'no' : 'yes';
429
430      /**
431       * Fires before an option is added.
432       *
433       * @since 2.9.0