add_option( string $option, mixed $value = '', string $deprecated = '', string|bool $autoload = 'yes' )
Ajoute une nouvelle option.
Paramètres
$option
(string)requisNom de l'option à ajouter. Pas d'échappements SQL attendus.
$value
(mixed)optionnelValeur de l'option. Doit être sérializéé si non scalaire. Pas d'échappements SQL attendus.
Valeur par défaut : ''
$deprecated
(string)optionnelDescription. Ne plus utiliser.
Valeur par défaut : ''
$autoload
(string|bool)optionnelPour charger une option quand WordPress commence. Par défaut est réglé comme autorisé. Accepte aussi 'no' pour désactiver pour des raisons d'héritages.
Valeur par défaut : 'yes'
Description / Informations supplémentaires
Pas besoin de sérializer les valeurs. Si elles en ont besoin, elles seront sérializées avant d'être enregistrées dans la base de donnée. RAPPEL : les ressources ne peuvent pas être sérializées ou ajoutées comme une option.
On peut créer des options sans valeurs et les mettre à jour plus tard. Les options existantes seront vérifiées pour être sûr de ne pas ajouter une option protégée.
Retourne
(bool) True si l'option a été ajouté, false sinon.
Déclaration et structure de la fonction add_option()
add_option()
est déclarée dans le fichier wp-includes/option.php
à la ligne 1047 :
function add_option( $option, $value = '', $deprecated = '', $autoload = null ) {
global $wpdb;
if ( ! empty( $deprecated ) ) {
_deprecated_argument( __FUNCTION__, '2.3.0' );
}
if ( is_scalar( $option ) ) {
$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 ( isset( $deprecated_keys[ $option ] ) && ! wp_installing() ) {
_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 add_option( $deprecated_keys[ $option ], $value, $deprecated, $autoload );
}
wp_protect_special_option( $option );
if ( is_object( $value ) ) {
$value = clone $value;
}
$value = sanitize_option( $option, $value );
/*
* 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', 'options' );
if ( ! is_array( $notoptions ) || ! isset( $notoptions[ $option ] ) ) {
/** This filter is documented in wp-includes/option.php */
if ( apply_filters( "default_option_{$option}", false, $option, false ) !== get_option( $option ) ) {
return false;
}
}
$serialized_value = maybe_serialize( $value );
$autoload = wp_determine_option_autoload_value( $option, $value, $serialized_value, $autoload );
/**
* Fires before an option is added.
*
* @since 2.9.0
*
* @param string $option Name of the option to add.
* @param mixed $value Value of the option.
*/
do_action( 'add_option', $option, $value );
$result = $wpdb->query( $wpdb->prepare( "INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)", $option, $serialized_value, $autoload ) );
if ( ! $result ) {
return false;
}
if ( ! wp_installing() ) {
if ( in_array( $autoload, wp_autoload_values_to_autoload(), true ) ) {
$alloptions = wp_load_alloptions( true );
$alloptions[ $option ] = $serialized_value;
wp_cache_set( 'alloptions', $alloptions, 'options' );
} else {
wp_cache_set( $option, $serialized_value, 'options' );
}
}
// This option exists now.
$notoptions = wp_cache_get( 'notoptions', 'options' ); // Yes, again... we need it to be fresh.
if ( is_array( $notoptions ) && isset( $notoptions[ $option ] ) ) {
unset( $notoptions[ $option ] );
wp_cache_set( 'notoptions', $notoptions, 'options' );
}
/**
* Fires after a specific option has been added.
*
* The dynamic portion of the hook name, `$option`, refers to the option name.
*
* @since 2.5.0 As "add_option_{$name}"
* @since 3.0.0
*
* @param string $option Name of the option to add.
* @param mixed $value Value of the option.
*/
do_action( "add_option_{$option}", $option, $value );
/**
* Fires after an option has been added.
*
* @since 2.9.0
*
* @param string $option Name of the added option.
* @param mixed $value Value of the option.
*/
do_action( 'added_option', $option, $value );
return true;
}
Fonctions utilisées par add_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.
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.
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.
Hooks utilisés par add_option()
add_option
Se lance avant qu'une option soit ajoutée.
add_option_option
Se lance avant qu'une option spécifique soit ajoutée.
added_option
Se lance après qu'une option ait été ajouté.
default_option_option
Filtre la valeur par défaut d'une option.
Où est utilisée la fonction add_option()
dans le CMS WordPress
Exemple
add_option( 'myhack_extraction_length', '255', '', 'yes' );
Sources
Codex WordPress : add_option()
Autres fonctions dans le même fichier : wp-includes/option.php