WordPress add_network_option() function kodu

WordPress add_network_option() function kodu

Mevcut seçenekler güncellenmeyecek.

function add_network_option( $network_id, $option, $value ) {
    global $wpdb;
 
    if ( $network_id && ! is_numeric( $network_id ) ) {
        return false;
    }
 
    $network_id = (int) $network_id;
 
    // Fallback to the current network if a network ID is not specified.
    if ( ! $network_id ) {
        $network_id = get_current_network_id();
    }
 
    wp_protect_special_option( $option );
 
    /**
     * Filters the value of a specific network option before it is added.
     *
     * The dynamic portion of the hook name, `$option`, refers to the option name.
     *
     * @since 2.9.0 As 'pre_add_site_option_' . $key
     * @since 3.0.0
     * @since 4.4.0 The `$option` parameter was added.
     * @since 4.7.0 The `$network_id` parameter was added.
     *
     * @param mixed  $value      Value of network option.
     * @param string $option     Option name.
     * @param int    $network_id ID of the network.
     */
    $value = apply_filters( "pre_add_site_option_{$option}", $value, $option, $network_id );
 
    $notoptions_key = "$network_id:notoptions";
 
    if ( ! is_multisite() ) {
        $result = add_option( $option, $value, '', 'no' );
    } else {
        $cache_key = "$network_id:$option";
 
        // Make sure the option doesn't already exist. We can check the 'notoptions' cache before we ask for a db query
        $notoptions = wp_cache_get( $notoptions_key, 'site-options' );
        if ( ! is_array( $notoptions ) || ! isset( $notoptions[ $option ] ) ) {
            if ( false !== get_network_option( $network_id, $option, false ) ) {
                return false;
            }
        }
 
        $value = sanitize_option( $option, $value );
 
        $serialized_value = maybe_serialize( $value );
        $result           = $wpdb->insert(
            $wpdb->sitemeta,
            array(
                'site_id'    => $network_id,
                'meta_key'   => $option,
                'meta_value' => $serialized_value,
            )
        );
 
        if ( ! $result ) {
            return false;
        }
 
        wp_cache_set( $cache_key, $value, 'site-options' );
 
        // This option exists now
        $notoptions = wp_cache_get( $notoptions_key, 'site-options' ); // yes, again... we need it to be fresh
        if ( is_array( $notoptions ) && isset( $notoptions[ $option ] ) ) {
            unset( $notoptions[ $option ] );
            wp_cache_set( $notoptions_key, $notoptions, 'site-options' );
        }
    }
 
    if ( $result ) {
 
        /**
         * Fires after a specific network option has been successfully added.
         *
         * The dynamic portion of the hook name, `$option`, refers to the option name.
         *
         * @since 2.9.0 As "add_site_option_{$key}"
         * @since 3.0.0
         * @since 4.7.0 The `$network_id` parameter was added.
         *
         * @param string $option     Name of the network option.
         * @param mixed  $value      Value of the network option.
         * @param int    $network_id ID of the network.
         */
        do_action( "add_site_option_{$option}", $option, $value, $network_id );
 
        /**
         * Fires after a network option has been successfully added.
         *
         * @since 3.0.0
         * @since 4.7.0 The `$network_id` parameter was added.
         *
         * @param string $option     Name of the network option.
         * @param mixed  $value      Value of the network option.
         * @param int    $network_id ID of the network.
         */
        do_action( 'add_site_option', $option, $value, $network_id );
 
        return true;
    }
 
    return false;
}

Benzer İçerikler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.