WordPress.org

Make WordPress Core

Ticket #28290: 28290.1.patch

File 28290.1.patch, 25.5 KB (added by spacedmonkey, 4 years ago)
  • wp-includes/option.php

    diff --git a/wp-includes/option.php b/wp-includes/option.php
    index ab8f81b..3bd11ad 100644
    a b function delete_all_user_settings() { 
    975975 * Retrieve site option value based on name of option.
    976976 *
    977977 * @since 2.8.0
     978 * @since 4.4.0 Modified into wrapper for get_network_option()
     979 *
     980 * @see get_network_option()
     981 *
     982 *
     983 * @param string $option Name of option to retrieve. Expected to not be SQL-escaped.
     984 * @param mixed $default Optional value to return if option doesn't exist. Default false.
     985 * @param bool $deprecated Whether to use cache. Multisite only. Always set to true.
     986 *
     987 * @return mixed Value set for the option.
     988 */
     989function get_site_option( $option, $default = false, $deprecated = true ) {
     990        return get_network_option( $option, $default );
     991}
     992
     993/**
     994 * Add a new site option.
     995 *
     996 * Existing options will not be updated. Note that prior to 3.3 this wasn't the case.
     997 *
     998 * @since 2.8.0
     999 * @since 4.4.0 Modified into wrapper for add_network_option()
     1000 *
     1001 * @see add_network_option()
     1002 *
     1003 *
     1004 * @param string $option Name of option to add. Expected to not be SQL-escaped.
     1005 * @param mixed $value Optional. Option value, can be anything. Expected to not be SQL-escaped.
     1006 *
     1007 * @return bool False if option was not added and true if option was added.
     1008 */
     1009function add_site_option( $option, $value ) {
     1010        return add_network_option( $option, $value );
     1011}
     1012
     1013/**
     1014 * Removes site option by name.
     1015 *
     1016 * @since 2.8.0
     1017 * @since 4.4.0 Modified into wrapper for delete_network_option()
     1018 *
     1019 * @see delete_network_option()
     1020 *
     1021 *
     1022 * @param string $option Name of option to remove. Expected to not be SQL-escaped.
     1023 *
     1024 * @return bool True, if succeed. False, if failure.
     1025 */
     1026function delete_site_option( $option ) {
     1027        return delete_network_option( $option );
     1028}
     1029
     1030/**
     1031 * Update the value of a site option that was already added.
     1032 *
     1033 * @since 2.8.0
     1034 * @since 4.4.0 Modified into wrapper for update_network_option()
     1035 *
     1036 * @see update_network_option()
     1037 *
     1038 *
     1039 * @param string $option Name of option. Expected to not be SQL-escaped.
     1040 * @param mixed $value Option value. Expected to not be SQL-escaped.
     1041 *
     1042 * @return bool False if value was not updated and true if value was updated.
     1043 */
     1044function update_site_option( $option, $value ) {
     1045        return update_network_option( $option, $value );
     1046}
     1047
     1048/**
     1049 * Retrieve site option value based on name of option.
     1050 *
     1051 * @since 4.4.0
    9781052 *
    9791053 * @see get_option()
    9801054 *
    9811055 * @global wpdb $wpdb
    9821056 *
    983  * @param string $option    Name of option to retrieve. Expected to not be SQL-escaped.
    984  * @param mixed  $default   Optional value to return if option doesn't exist. Default false.
    985  * @param bool   $use_cache Whether to use cache. Multisite only. Default true.
     1057 * @param string $option Name of option to retrieve. Expected to not be SQL-escaped.
     1058 * @param mixed $default Optional value to return if option doesn't exist. Default false.
     1059 * @param int|bool $network_id ID of the network.
     1060 *
    9861061 * @return mixed Value set for the option.
    9871062 */
    988 function get_site_option( $option, $default = false, $use_cache = true ) {
     1063function get_network_option( $option, $default = false, $network_id = true ) {
    9891064        global $wpdb;
    9901065
     1066        /** If network ID not set, get current network. **/
     1067        if ( false === $network_id && is_multisite() ) {
     1068                $current_network = get_current_site();
     1069                $network_id      = $current_network->id;
     1070        }
     1071        /** Make sure network id is an int */
     1072        $network_id = (int) $network_id;
     1073
    9911074        /**
    9921075         * Filter an existing site option before it is retrieved.
    9931076         *
    function get_site_option( $option, $default = false, $use_cache = true ) { 
    10001083         * @since 3.0.0
    10011084         * @since 4.4.0 The `$option` parameter was added
    10021085         *
    1003          * @param mixed  $pre_option The default value to return if the option does not exist.
    1004          * @param string $option     Option name.
     1086         * @param mixed $pre_option The default value to return if the option does not exist.
     1087         * @param string $option Option name.
    10051088         */
    10061089        $pre = apply_filters( 'pre_site_option_' . $option, false, $option );
    10071090
    1008         if ( false !== $pre )
    1009                 return $pre;
     1091        if ( false !== $pre ) {
     1092                return $pre;
     1093        }
     1094
     1095        /**
     1096         * Filter an existing network option before it is retrieved.
     1097         *
     1098         * The dynamic portion of the hook name, `$option`, refers to the option name.
     1099         *
     1100         * Passing a truthy value to the filter will effectively short-circuit retrieval,
     1101         * returning the passed value instead.
     1102         *
     1103         * @since 4.4.0
     1104         *
     1105         * @param mixed $pre_option The default value to return if the option does not exist.
     1106         * @param string $option Option name.
     1107         * @param int $network_id ID of the network.
     1108         *
     1109         */
     1110        $pre = apply_filters( 'pre_network_option_' . $option, false, $option, $network_id );
     1111
     1112        if ( false !== $pre ) {
     1113                return $pre;
     1114        }
    10101115
    10111116        // prevent non-existent options from triggering multiple queries
    1012         $notoptions_key = "{$wpdb->siteid}:notoptions";
    1013         $notoptions = wp_cache_get( $notoptions_key, 'site-options' );
     1117        $notoptions_key = "{$network_id}:notoptions";
     1118        $notoptions     = wp_cache_get( $notoptions_key, 'site-options' );
    10141119
    1015         if ( isset( $notoptions[$option] ) ) {
     1120        if ( isset( $notoptions[ $option ] ) ) {
    10161121
    10171122                /**
    10181123                 * Filter a specific default site option.
    function get_site_option( $option, $default = false, $use_cache = true ) { 
    10221127                 * @since 3.4.0
    10231128                 * @since 4.4.0 The `$option` parameter was added.
    10241129                 *
    1025                  * @param mixed  $default The value to return if the site option does not exist
     1130                 * @param mixed $default The value to return if the site option does not exist
    10261131                 *                        in the database.
    1027                  * @param string $option  Option name.
     1132                 * @param string $option Option name.
    10281133                 */
    1029                 return apply_filters( 'default_site_option_' . $option, $default, $option );
     1134                $default = apply_filters( 'default_site_option_' . $option, $default, $option );
     1135
     1136                /**
     1137                 * Filter a specific default network option.
     1138                 *
     1139                 * The dynamic portion of the hook name, `$option`, refers to the option name.
     1140                 *
     1141                 * @since 4.4.0
     1142                 *
     1143                 * @param mixed $default The value to return if the site option does not exist
     1144                 *                        in the database.
     1145                 * @param string $option Option name.
     1146                 * @param int $network_id ID of the network.
     1147                 */
     1148
     1149                return apply_filters( 'default_network_option_' . $option, $default, $option, $network_id );
    10301150        }
    10311151
    10321152        if ( ! is_multisite() ) {
    10331153
    10341154                /** This filter is documented in wp-includes/option.php */
    10351155                $default = apply_filters( 'default_site_option_' . $option, $default, $option );
    1036                 $value = get_option($option, $default);
     1156                /** This filter is documented in wp-includes/option.php */
     1157                $default = apply_filters( 'default_network_option_' . $option, $default, $option, $network_id );
     1158                $value   = get_option( $option, $default );
    10371159        } else {
    1038                 $cache_key = "{$wpdb->siteid}:$option";
    1039                 if ( $use_cache )
    1040                         $value = wp_cache_get($cache_key, 'site-options');
     1160                $cache_key = "{$network_id}:$option";
     1161                $value     = wp_cache_get( $cache_key, 'site-options' );
    10411162
    1042                 if ( !isset($value) || (false === $value) ) {
    1043                         $row = $wpdb->get_row( $wpdb->prepare("SELECT meta_value FROM $wpdb->sitemeta WHERE meta_key = %s AND site_id = %d", $option, $wpdb->siteid ) );
     1163                if ( false === $value ) {
     1164                        $row = $wpdb->get_row( $wpdb->prepare( "SELECT meta_value FROM $wpdb->sitemeta WHERE meta_key = %s AND site_id = %d", $option, $network_id ) );
    10441165
    10451166                        // Has to be get_row instead of get_var because of funkiness with 0, false, null values
    10461167                        if ( is_object( $row ) ) {
    function get_site_option( $option, $default = false, $use_cache = true ) { 
    10491170                                wp_cache_set( $cache_key, $value, 'site-options' );
    10501171                        } else {
    10511172                                if ( ! is_array( $notoptions ) ) {
    1052                                          $notoptions = array();
     1173                                        $notoptions = array();
    10531174                                }
    1054                                 $notoptions[$option] = true;
     1175                                $notoptions[ $option ] = true;
    10551176                                wp_cache_set( $notoptions_key, $notoptions, 'site-options' );
    10561177
    10571178                                /** This filter is documented in wp-includes/option.php */
    10581179                                $value = apply_filters( 'default_site_option_' . $option, $default, $option );
     1180                                /** This filter is documented in wp-includes/option.php */
     1181                                $value = apply_filters( 'default_network_option_' . $option, $value, $option, $network_id );
    10591182                        }
    10601183                }
    10611184        }
    10621185
     1186
    10631187        /**
    10641188         * Filter the value of an existing site option.
    10651189         *
    function get_site_option( $option, $default = false, $use_cache = true ) { 
    10691193         * @since 3.0.0
    10701194         * @since 4.4.0 The `$option` parameter was added
    10711195         *
    1072          * @param mixed  $value  Value of site option.
     1196         * @param mixed $value Value of site option.
     1197         * @param string $option Option name.
     1198         */
     1199        $value = apply_filters( 'site_option_' . $option, $value, $option );
     1200
     1201        /**
     1202         * Filter the value of an existing network option.
     1203         *
     1204         * The dynamic portion of the hook name, `$option`, refers to the option name.
     1205         *
     1206         * @since 4.4.0
     1207         *
     1208         * @param mixed $value Value of site option.
    10731209         * @param string $option Option name.
     1210         * @param int $network_id ID of the network.
    10741211         */
    1075         return apply_filters( 'site_option_' . $option, $value, $option );
     1212
     1213        return apply_filters( 'network_option_' . $option, $value, $option, $network_id );
    10761214}
    10771215
    10781216/**
    1079  * Add a new site option.
     1217 * Add a new network option.
    10801218 *
    10811219 * Existing options will not be updated. Note that prior to 3.3 this wasn't the case.
    10821220 *
    1083  * @since 2.8.0
     1221 * @since 4.4.0
    10841222 *
    10851223 * @see add_option()
    10861224 *
    10871225 * @global wpdb $wpdb
    10881226 *
    10891227 * @param string $option Name of option to add. Expected to not be SQL-escaped.
    1090  * @param mixed  $value  Optional. Option value, can be anything. Expected to not be SQL-escaped.
     1228 * @param mixed $value Optional. Option value, can be anything. Expected to not be SQL-escaped.
     1229 * @param  int|bool $network_id ID of the network.
     1230 *
    10911231 * @return bool False if option was not added and true if option was added.
    10921232 */
    1093 function add_site_option( $option, $value ) {
     1233function add_network_option( $option, $value, $network_id = false ) {
    10941234        global $wpdb;
    10951235
     1236        /** If network ID not set, get current network. **/
     1237        if ( false === $network_id && is_multisite() ) {
     1238                $current_network = get_current_site();
     1239                $network_id      = $current_network->id;
     1240        }
     1241        /** Make sure network id is an int */
     1242        $network_id = (int) $network_id;
     1243
    10961244        wp_protect_special_option( $option );
    10971245
    10981246        /**
    function add_site_option( $option, $value ) { 
    11041252         * @since 3.0.0
    11051253         * @since 4.4.0 The `$option` parameter was added
    11061254         *
    1107          * @param mixed  $value Value of site option.
     1255         * @param mixed $value Value of site option.
    11081256         * @param string $option Option name.
    11091257         */
    11101258        $value = apply_filters( 'pre_add_site_option_' . $option, $value, $option );
    11111259
    1112         $notoptions_key = "{$wpdb->siteid}:notoptions";
     1260        /**
     1261         * Filter the value of a specific network option before it is added.
     1262         *
     1263         * The dynamic portion of the hook name, `$option`, refers to the option name.
     1264         *
     1265         * @since 4.4.0
     1266         *
     1267         * @param mixed $value Value of site option.
     1268         * @param string $option Option name.
     1269         * @param  int $network_id ID of the network.
     1270         */
     1271        $value = apply_filters( 'pre_add_network_option_' . $option, $value, $option, $network_id );
     1272
     1273        $notoptions_key = "{$network_id}:notoptions";
    11131274
    1114         if ( !is_multisite() ) {
     1275        if ( ! is_multisite() ) {
    11151276                $result = add_option( $option, $value );
    11161277        } else {
    1117                 $cache_key = "{$wpdb->siteid}:$option";
     1278                $cache_key = "{$network_id}:$option";
    11181279
    11191280                // Make sure the option doesn't already exist. We can check the 'notoptions' cache before we ask for a db query
    11201281                $notoptions = wp_cache_get( $notoptions_key, 'site-options' );
    1121                 if ( ! is_array( $notoptions ) || ! isset( $notoptions[$option] ) )
    1122                         if ( false !== get_site_option( $option ) )
     1282                if ( ! is_array( $notoptions ) || ! isset( $notoptions[ $option ] ) ) {
     1283                        if ( false !== get_network_option( $option, false, $network_id ) ) {
    11231284                                return false;
     1285                        }
     1286                }
    11241287
    11251288                $value = sanitize_option( $option, $value );
    11261289
    11271290                $serialized_value = maybe_serialize( $value );
    1128                 $result = $wpdb->insert( $wpdb->sitemeta, array('site_id' => $wpdb->siteid, 'meta_key' => $option, 'meta_value' => $serialized_value ) );
     1291                $result           = $wpdb->insert( $wpdb->sitemeta, array(
     1292                        'site_id'    => $network_id,
     1293                        'meta_key'   => $option,
     1294                        'meta_value' => $serialized_value
     1295                ) );
    11291296
    1130                 if ( ! $result )
     1297                if ( ! $result ) {
    11311298                        return false;
     1299                }
    11321300
    11331301                wp_cache_set( $cache_key, $value, 'site-options' );
    11341302
    11351303                // This option exists now
    11361304                $notoptions = wp_cache_get( $notoptions_key, 'site-options' ); // yes, again... we need it to be fresh
    1137                 if ( is_array( $notoptions ) && isset( $notoptions[$option] ) ) {
    1138                         unset( $notoptions[$option] );
     1305                if ( is_array( $notoptions ) && isset( $notoptions[ $option ] ) ) {
     1306                        unset( $notoptions[ $option ] );
    11391307                        wp_cache_set( $notoptions_key, $notoptions, 'site-options' );
    11401308                }
    11411309        }
    function add_site_option( $option, $value ) { 
    11511319                 * @since 3.0.0
    11521320                 *
    11531321                 * @param string $option Name of site option.
    1154                  * @param mixed  $value Value of site option.
     1322                 * @param mixed $value Value of site option.
    11551323                 */
    11561324                do_action( "add_site_option_{$option}", $option, $value );
    11571325
    11581326                /**
     1327                 * Fires after a specific network option has been successfully added.
     1328                 *
     1329                 * The dynamic portion of the hook name, `$option`, refers to the option name.
     1330                 *
     1331                 * @since 4.4.0
     1332                 *
     1333                 * @param string $option Name of site option.
     1334                 * @param mixed $value Value of site option.
     1335                 * @param  int $network_id ID of the network.
     1336                 */
     1337                do_action( "add_network_option_{$option}", $option, $value, $network_id );
     1338
     1339                /**
    11591340                 * Fires after a site option has been successfully added.
    11601341                 *
    11611342                 * @since 3.0.0
    11621343                 *
    11631344                 * @param string $option Name of site option.
    1164                  * @param mixed  $value Value of site option.
     1345                 * @param mixed $value Value of site option.
    11651346                 */
    11661347                do_action( "add_site_option", $option, $value );
    11671348
     1349                /**
     1350                 * Fires after a network option has been successfully added.
     1351                 *
     1352                 * @since 4.4.0
     1353                 *
     1354                 * @param string $option Name of site option.
     1355                 * @param mixed $value Value of site option.
     1356                 * @param int $network_id ID of the network.
     1357                 */
     1358                do_action( "add_network_option", $option, $value, $network_id );
     1359
    11681360                return true;
    11691361        }
     1362
    11701363        return false;
    11711364}
    11721365
    11731366/**
    1174  * Removes site option by name.
     1367 * Removes network option by name.
    11751368 *
    1176  * @since 2.8.0
     1369 * @since 4.4.0
    11771370 *
    11781371 * @see delete_option()
    11791372 *
    11801373 * @global wpdb $wpdb
    11811374 *
    1182  * @param string $option Name of option to remove. Expected to not be SQL-escaped.
     1375 * @param  string $option Name of option to remove. Expected to not be SQL-escaped.
     1376 * @param  int|bool $network_id ID of the network.
     1377 *
    11831378 * @return bool True, if succeed. False, if failure.
    11841379 */
    1185 function delete_site_option( $option ) {
     1380function delete_network_option( $option, $network_id = false ) {
    11861381        global $wpdb;
    11871382
     1383        /** If network ID not set, get current network. **/
     1384        if ( false === $network_id && is_multisite() ) {
     1385                $current_network = get_current_site();
     1386                $network_id      = $current_network->id;
     1387        }
     1388        /** Make sure network id is an int */
     1389        $network_id = (int) $network_id;
     1390
    11881391        // ms_protect_special_option( $option ); @todo
    11891392
    11901393        /**
    function delete_site_option( $option ) { 
    11991402         */
    12001403        do_action( 'pre_delete_site_option_' . $option, $option );
    12011404
    1202         if ( !is_multisite() ) {
     1405        /**
     1406         * Fires immediately before a specific network option is deleted.
     1407         *
     1408         * The dynamic portion of the hook name, `$option`, refers to the option name.
     1409         *
     1410         * @since 4.4.0
     1411         *
     1412         * @param string $option Option name.
     1413         * @param int $network_id ID of the network.
     1414         */
     1415        do_action( 'pre_delete_network_option_' . $option, $option, $network_id );
     1416
     1417        if ( ! is_multisite() ) {
    12031418                $result = delete_option( $option );
    12041419        } else {
    1205                 $row = $wpdb->get_row( $wpdb->prepare( "SELECT meta_id FROM {$wpdb->sitemeta} WHERE meta_key = %s AND site_id = %d", $option, $wpdb->siteid ) );
    1206                 if ( is_null( $row ) || !$row->meta_id )
     1420                $row = $wpdb->get_row( $wpdb->prepare( "SELECT meta_id FROM {$wpdb->sitemeta} WHERE meta_key = %s AND site_id = %d", $option, $network_id ) );
     1421                if ( is_null( $row ) || ! $row->meta_id ) {
    12071422                        return false;
    1208                 $cache_key = "{$wpdb->siteid}:$option";
     1423                }
     1424                $cache_key = "{$network_id}:$option";
    12091425                wp_cache_delete( $cache_key, 'site-options' );
    12101426
    1211                 $result = $wpdb->delete( $wpdb->sitemeta, array( 'meta_key' => $option, 'site_id' => $wpdb->siteid ) );
     1427                $result = $wpdb->delete( $wpdb->sitemeta, array( 'meta_key' => $option, 'site_id' => $network_id ) );
    12121428        }
    12131429
    12141430        if ( $result ) {
    function delete_site_option( $option ) { 
    12261442                do_action( "delete_site_option_{$option}", $option );
    12271443
    12281444                /**
     1445                 * Fires after a specific network option has been deleted.
     1446                 *
     1447                 * The dynamic portion of the hook name, `$option`, refers to the option name.
     1448                 *
     1449                 * @since 4.4.0
     1450                 *
     1451                 * @param string $option Name of the site option.
     1452                 * @param int $network_id ID of the network.
     1453                 */
     1454                do_action( "delete_network_option_{$option}", $option, $network_id );
     1455
     1456                /**
    12291457                 * Fires after a site option has been deleted.
    12301458                 *
    12311459                 * @since 3.0.0
    function delete_site_option( $option ) { 
    12341462                 */
    12351463                do_action( "delete_site_option", $option );
    12361464
     1465                /**
     1466                 * Fires after a network option has been deleted.
     1467                 *
     1468                 * @since 4.4.0
     1469                 *
     1470                 * @param string $option Name of the site option.
     1471                 * @param int $network_id ID of the network.
     1472                 */
     1473                do_action( "delete_network_option", $option, $network_id );
     1474
    12371475                return true;
    12381476        }
     1477
    12391478        return false;
    12401479}
    12411480
    12421481/**
    1243  * Update the value of a site option that was already added.
     1482 * Update the value of a network option that was already added.
    12441483 *
    1245  * @since 2.8.0
     1484 * @since 4.4.0
    12461485 *
    12471486 * @see update_option()
    12481487 *
    12491488 * @global wpdb $wpdb
    12501489 *
    12511490 * @param string $option Name of option. Expected to not be SQL-escaped.
    1252  * @param mixed  $value  Option value. Expected to not be SQL-escaped.
     1491 * @param mixed $value Option value. Expected to not be SQL-escaped.
     1492 * @param  int|bool $network_id ID of the network.
     1493 *
    12531494 * @return bool False if value was not updated and true if value was updated.
    12541495 */
    1255 function update_site_option( $option, $value ) {
     1496function update_network_option( $option, $value, $network_id = false ) {
    12561497        global $wpdb;
    12571498
     1499        /** If network ID not set, get current network. **/
     1500        if ( false === $network_id && is_multisite() ) {
     1501                $current_network = get_current_site();
     1502                $network_id      = $current_network->id;
     1503        }
     1504        /** Make sure network id is an int */
     1505        $network_id = (int) $network_id;
     1506
    12581507        wp_protect_special_option( $option );
    12591508
    1260         $old_value = get_site_option( $option );
     1509        $old_value = get_network_option( $option, false, $network_id );
    12611510
    12621511        /**
    12631512         * Filter a specific site option before its value is updated.
    function update_site_option( $option, $value ) { 
    12681517         * @since 3.0.0
    12691518         * @since 4.4.0 The `$option` parameter was added
    12701519         *
    1271          * @param mixed  $value    New value of site option.
    1272          * @param mixed  $old_value Old value of site option.
    1273          * @param string $option    Option name.
     1520         * @param mixed $value New value of site option.
     1521         * @param mixed $old_value Old value of site option.
     1522         * @param string $option Option name.
    12741523         */
    12751524        $value = apply_filters( 'pre_update_site_option_' . $option, $value, $old_value, $option );
    12761525
    1277         if ( $value === $old_value )
     1526        if ( $value === $old_value ) {
    12781527                return false;
     1528        }
    12791529
    1280         if ( false === $old_value )
    1281                 return add_site_option( $option, $value );
     1530        /**
     1531         * Filter a specific network option before its value is updated.
     1532         *
     1533         * The dynamic portion of the hook name, `$option`, refers to the option name.
     1534         *
     1535         * @since 4.4.0
     1536         *
     1537         * @param mixed $value New value of site option.
     1538         * @param mixed $old_value Old value of site option.
     1539         * @param string $option Option name.
     1540         * @param int $network_id ID of the network.
     1541         */
     1542        $value = apply_filters( 'pre_update_network_option_' . $option, $value, $old_value, $option, $network_id );
    12821543
    1283         $notoptions_key = "{$wpdb->siteid}:notoptions";
    1284         $notoptions = wp_cache_get( $notoptions_key, 'site-options' );
    1285         if ( is_array( $notoptions ) && isset( $notoptions[$option] ) ) {
    1286                 unset( $notoptions[$option] );
     1544        if ( $value === $old_value ) {
     1545                return false;
     1546        }
     1547
     1548        if ( false === $old_value ) {
     1549                return add_network_option( $option, $value, $network_id );
     1550        }
     1551
     1552        $notoptions_key = "{$network_id}:notoptions";
     1553        $notoptions     = wp_cache_get( $notoptions_key, 'site-options' );
     1554        if ( is_array( $notoptions ) && isset( $notoptions[ $option ] ) ) {
     1555                unset( $notoptions[ $option ] );
    12871556                wp_cache_set( $notoptions_key, $notoptions, 'site-options' );
    12881557        }
    12891558
    1290         if ( !is_multisite() ) {
     1559        if ( ! is_multisite() ) {
    12911560                $result = update_option( $option, $value );
    12921561        } else {
    12931562                $value = sanitize_option( $option, $value );
    12941563
    12951564                $serialized_value = maybe_serialize( $value );
    1296                 $result = $wpdb->update( $wpdb->sitemeta, array( 'meta_value' => $serialized_value ), array( 'site_id' => $wpdb->siteid, 'meta_key' => $option ) );
     1565                $result           = $wpdb->update( $wpdb->sitemeta, array( 'meta_value' => $serialized_value ), array(
     1566                        'site_id'  => $network_id,
     1567                        'meta_key' => $option
     1568                ) );
    12971569
    12981570                if ( $result ) {
    1299                         $cache_key = "{$wpdb->siteid}:$option";
     1571                        $cache_key = "{$network_id}:$option";
    13001572                        wp_cache_set( $cache_key, $value, 'site-options' );
    13011573                }
    13021574        }
    function update_site_option( $option, $value ) { 
    13111583                 * @since 2.9.0 As "update_site_option_{$key}"
    13121584                 * @since 3.0.0
    13131585                 *
    1314                  * @param string $option    Name of site option.
    1315                  * @param mixed  $value    Current value of site option.
    1316                  * @param mixed  $old_value Old value of site option.
     1586                 * @param string $option Name of site option.
     1587                 * @param mixed $value Current value of site option.
     1588                 * @param mixed $old_value Old value of site option.
    13171589                 */
    13181590                do_action( "update_site_option_{$option}", $option, $value, $old_value );
    13191591
     1592
     1593                /**
     1594                 * Fires after the value of a specific network option has been successfully updated.
     1595                 *
     1596                 * The dynamic portion of the hook name, `$option`, refers to the option name.
     1597                 *
     1598                 * @since 4.4.0
     1599                 *
     1600                 * @param string $option Name of site option.
     1601                 * @param mixed $value Current value of site option.
     1602                 * @param mixed $old_value Old value of site option.
     1603                 * @param int $network_id ID of the network.
     1604                 */
     1605                do_action( "update_network_option_{$option}", $option, $value, $old_value, $network_id );
     1606
     1607                /**
     1608                 * Fires after the value of a specific network option has been successfully updated.
     1609                 *
     1610                 * The dynamic portion of the hook name, `$option`, refers to the option name.
     1611                 *
     1612                 * @since 4.4.0
     1613                 *
     1614                 * @param string $option Name of site option.
     1615                 * @param mixed $value Current value of site option.
     1616                 * @param mixed $old_value Old value of site option.
     1617                 * @param int $network_id ID of the network.
     1618                 */
     1619                do_action( "update_network_option_{$option}", $option, $value, $old_value, $network_id );
     1620
    13201621                /**
    13211622                 * Fires after the value of a site option has been successfully updated.
    13221623                 *
    13231624                 * @since 3.0.0
    13241625                 *
    1325                  * @param string $option    Name of site option.
    1326                  * @param mixed  $value    Current value of site option.
    1327                  * @param mixed  $old_value Old value of site option.
     1626                 * @param string $option Name of site option.
     1627                 * @param mixed $value Current value of site option.
     1628                 * @param mixed $old_value Old value of site option.
    13281629                 */
    13291630                do_action( "update_site_option", $option, $value, $old_value );
    13301631
     1632                /**
     1633                 * Fires after the value of a network option has been successfully updated.
     1634                 *
     1635                 * @since 4.4.0
     1636                 *
     1637                 * @param string $option Name of site option.
     1638                 * @param mixed $value Current value of site option.
     1639                 * @param mixed $old_value Old value of site option.
     1640                 * @param int $network_id ID of the network.
     1641                 */
     1642                do_action( "update_network_option", $option, $value, $old_value, $network_id );
     1643
    13311644                return true;
    13321645        }
     1646
    13331647        return false;
    13341648}
    13351649
    function delete_site_transient( $transient ) { 
    13591673        } else {
    13601674                $option_timeout = '_site_transient_timeout_' . $transient;
    13611675                $option = '_site_transient_' . $transient;
    1362                 $result = delete_site_option( $option );
     1676                $result = delete_network_option( $option );
    13631677                if ( $result )
    1364                         delete_site_option( $option_timeout );
     1678                        delete_network_option( $option_timeout );
    13651679        }
    13661680        if ( $result ) {
    13671681
    function get_site_transient( $transient ) { 
    14221736                $transient_option = '_site_transient_' . $transient;
    14231737                if ( ! in_array( $transient, $no_timeout ) ) {
    14241738                        $transient_timeout = '_site_transient_timeout_' . $transient;
    1425                         $timeout = get_site_option( $transient_timeout );
     1739                        $timeout = get_network_option( $transient_timeout );
    14261740                        if ( false !== $timeout && $timeout < time() ) {
    1427                                 delete_site_option( $transient_option  );
    1428                                 delete_site_option( $transient_timeout );
     1741                                delete_network_option( $transient_option  );
     1742                                delete_network_option( $transient_timeout );
    14291743                                $value = false;
    14301744                        }
    14311745                }
    14321746
    14331747                if ( ! isset( $value ) )
    1434                         $value = get_site_option( $transient_option );
     1748                        $value = get_network_option( $transient_option );
    14351749        }
    14361750
    14371751        /**
    function set_site_transient( $transient, $value, $expiration = 0 ) { 
    14861800        } else {
    14871801                $transient_timeout = '_site_transient_timeout_' . $transient;
    14881802                $option = '_site_transient_' . $transient;
    1489                 if ( false === get_site_option( $option ) ) {
     1803                if ( false === get_network_option( $option ) ) {
    14901804                        if ( $expiration )
    1491                                 add_site_option( $transient_timeout, time() + $expiration );
    1492                         $result = add_site_option( $option, $value );
     1805                                add_network_option( $transient_timeout, time() + $expiration );
     1806                        $result = add_network_option( $option, $value );
    14931807                } else {
    14941808                        if ( $expiration )
    1495                                 update_site_option( $transient_timeout, time() + $expiration );
    1496                         $result = update_site_option( $option, $value );
     1809                                update_network_option( $transient_timeout, time() + $expiration );
     1810                        $result = update_network_option( $option, $value );
    14971811                }
    14981812        }
    14991813        if ( $result ) {