Make WordPress Core

Ticket #21989: no-double-handling-2.patch

File no-double-handling-2.patch, 1.2 KB (added by lev0, 17 months ago)
  • wp-includes/option.php

    a b  
    461461                $value = clone $value;
    462462        }
    463463
    464         $value     = sanitize_option( $option, $value );
    465464        $old_value = get_option( $option );
    466465
     466        $notoptions = wp_cache_get( 'notoptions', 'options' );
     467
     468        if ( is_array( $notoptions ) && isset( $notoptions[ $option ] ) ) {
     469                /** This filter is documented in wp-includes/option.php */
     470                if ( apply_filters( "default_option_{$option}", false, $option, false ) === $old_value ) {
     471                        // Default setting for new options is 'yes'.
     472                        if ( null === $autoload ) {
     473                                $autoload = 'yes';
     474                        }
     475
     476                        return add_option( $option, $value, '', $autoload );
     477                }
     478
     479                return false;
     480        }
     481
     482        $value = sanitize_option( $option, $value );
     483
    467484        /**
    468485         * Filters a specific option before its value is (maybe) serialized and updated.
    469486         *
     
    502519                return false;
    503520        }
    504521
    505         /** This filter is documented in wp-includes/option.php */
    506         if ( apply_filters( "default_option_{$option}", false, $option, false ) === $old_value ) {
    507                 // Default setting for new options is 'yes'.
    508                 if ( null === $autoload ) {
    509                         $autoload = 'yes';
    510                 }
    511 
    512                 return add_option( $option, $value, '', $autoload );
    513         }
    514 
    515522        $serialized_value = maybe_serialize( $value );
    516523
    517524        /**