Description

Si la valeur doit être sérializer, elle le sera avant d'être insérer en base de donné.

Si l'option n'existe pas, elle sera créer.

Paramètres

$option

(string) (Requis) Nom de l'option à mettre à jour.

$value

(mixed) (Requis) Valeur de l'option.

$autoload

(string | bool) (Optionnel) Charge l'option quand Wordpress démarre. Pour les options existantes, $autoload peut aussi être mise à jour en utilisant update_option() si $value est aussi changée. Accepte 'yes' | true pour autoriser ou 'no' | false pour désactiver. Pour les options non-existantes la valeur par défaut est 'yes'.

Valeur par défaut : null

Retourne

(bool) True si la valeur a été mise à jour, false autrement.

Structure de la fonction update_option()

Définie dans le fichier wp-includes/option.php à la ligne 331 :

function update_option( $option, $value, $autoload = null ) {
    global $wpdb;

    $option = trim( $option );
    if ( empty( $option ) ) {
        return false;
    }

    /*
     * Until a proper _deprecated_option() function can be introduced,
     * redirect requests to deprecated keys to the new, correct ones.
     */
    $deprecated_keys = array(
        'blacklist_keys'    => 'disallowed_keys',
        'comment_whitelist' => 'comment_previously_approved',
    );

    if ( ! wp_installing() && isset( $deprecated_keys[ $option ] ) ) {
        _deprecated_argument(
            __FUNCTION__,
            '5.5.0',
            sprintf(
                /* translators: 1: Deprecated option key, 2: New option key. */
                __( 'The "%1$s" option key has been renamed to "%2$s".' ),
                $option,
                $deprecated_keys[ $option ]
            )
        );
        return update_option( $deprecated_keys[ $option ], $value, $autoload );
    }

    wp_protect_special_option( $option );

    if ( is_object( $value ) ) {
        $value = clone $value;
    }

    $value     = sanitize_option( $option, $value );
    $old_value = get_option( $option );

    /**
     * Filters a specific option before its value is (maybe) serialized and updated.
     *
     * The dynamic portion of the hook name, `$option`, refers to the option name.
     *
     * @since 2.6.0
     * @since 4.4.0 The `$option` parameter was added.
     *
     * @param mixed  $value     The new, unserialized option value.
     * @param mixed  $old_value The old option value.
     * @param string $option    Option name.
     */
    $value = apply_filters( "pre_update_option_{$option}", $value, $old_value, $option );

    /**
     * Filters an option before its value is (maybe) serialized and updated.
     *
     * @since 3.9.0
     *
     * @param mixed  $value     The new, unserialized option value.
     * @param string $option    Name of the option.
     * @param mixed  $old_value The old option value.
     */
    $value = apply_filters( 'pre_update_option', $value, $option, $old_value );

    /*
     * If the new and old values are the same, no need to update.
     *
     * Unserialized values will be adequate in most cases. If the unserialized
     * data differs, the (maybe) serialized data is checked to avoid
     * unnecessary database calls for otherwise identical object instances.
     *
     * See https://core.trac.wordpress.org/ticket/38903
     */
    if ( $value === $old_value || maybe_serialize( $value ) === maybe_serialize( $old_value ) ) {
        return false;
    }

    /** This filter is documented in wp-includes/option.php */
    if ( apply_filters( "default_option_{$option}", false, $option, false ) === $old_value ) {
        // Default setting for new options is 'yes'.
        if ( null === $autoload ) {
            $autoload = 'yes';
        }

        return add_option( $option, $value, '', $autoload );
    }

    $serialized_value = maybe_serialize( $value );

    /**
     * Fires immediately before an option value is updated.
     *
     * @since 2.9.0
     *
     * @param string $option    Name of the option to update.
     * @param mixed  $old_value The old option value.
     * @param mixed  $value     The new option value.
     */
    do_action( 'update_option', $option, $old_value, $value );

    $update_args = array(
        'option_value' => $serialized_value,
    );

    if ( null !== $autoload ) {
        $update_args['autoload'] = ( 'no' === $autoload || false === $autoload ) ? 'no' : 'yes';
    }

    $result = $wpdb->update( $wpdb->options, $update_args, array( 'option_name' => $option ) );
    if ( ! $result ) {
        return false;
    }

    $notoptions = wp_cache_get( 'notoptions', 'options' );

    if ( is_array( $notoptions ) && isset( $notoptions[ $option ] ) ) {
        unset( $notoptions[ $option ] );
        wp_cache_set( 'notoptions', $notoptions, 'options' );
    }

    if ( ! wp_installing() ) {
        $alloptions = wp_load_alloptions( true );
        if ( isset( $alloptions[ $option ] ) ) {
            $alloptions[ $option ] = $serialized_value;
            wp_cache_set( 'alloptions', $alloptions, 'options' );
        } else {
            wp_cache_set( $option, $serialized_value, 'options' );
        }
    }

    /**
     * Fires after the value of a specific option has been successfully updated.
     *
     * The dynamic portion of the hook name, `$option`, refers to the option name.
     *
     * @since 2.0.1
     * @since 4.4.0 The `$option` parameter was added.
     *
     * @param mixed  $old_value The old option value.
     * @param mixed  $value     The new option value.
     * @param string $option    Option name.
     */
    do_action( "update_option_{$option}", $old_value, $value, $option );

    /**
     * Fires after the value of an option has been successfully updated.
     *
     * @since 2.9.0
     *
     * @param string $option    Name of the updated option.
     * @param mixed  $old_value The old option value.
     * @param mixed  $value     The new option value.
     */
    do_action( 'updated_option', $option, $old_value, $value );

    return true;
}

Fonctions et Hooks utilisés par update_option()

wp_installing()

Vérifie ou met Wordpress en mode installation.

wp_cache_get()

Retourne les contenus du cache en donnant la clé et le groupe.

wp_cache_set()

Sauvegarde les données dans le cache.

__()

Retourne la traduction d'un texte.

sanitize_option()

Nettoie divers valeurs d'option basées sur la nature de l'option.

_deprecated_argument()

Marque l'argument d'une fonction comme déprécié et informe quand il a été utilisé.

maybe_serialize()

Sérialize une donnée si besoin.

apply_filters()

Appel les fonctions qui ont été attaché à un filtre (hook).

do_action()

Exécute des fonctions attachées à un hook spécifique.

update_option()

Met à jour la valeur d'une option.

add_option()

Ajoute une nouvelle option.

wp_load_alloptions()

Charge et met en cache toutes les options auto-chargées si disponible ou toutes les options.

pre_update_option_{$option}

Filtre une option spécifique avant que sa valeur ne soit sérializée (éventuellement) et mise à jour.

pre_update_option

Filtre une option avant que sa valeur ne soit sérializée (éventuellement) et mise à jour.

update_option

Se lance juste avant qu'une valeur d'option ne soit mise à jour.

update_option_{$option}

Se lance après que la valeur d'une option spécifique ait été mise à jour avec succès.

updated_option

Se lance après que la valeur d'une option ait été mise à jour avec succès.

wp_protect_special_option()

Empêche la suppression des options protégées de WordPress.

get_option()

Retourne une valeur d'option en fonction de son nom.

default_option_{$option}

Filtre la valeur par défaut d'une option.

Où trouver la fonction update_option() dans le CMS Wordpress

Exemple

Régler le status des commentaires par défaut à 'closed' :
update_option( 'default_comment_status', 'closed' );

Sources

Codex Wordpress : update_option()

Autres fonctions dans le même fichier : wp-includes/option.php

Retour