Sanitise diverses valeurs d'option en fonction de la nature de l'option.

Description

Il s'agit essentiellement d'une instruction switch qui va faire passer $value par un certain nombre de fonctions en fonction de $option.

Paramètres

$option

(chaîne de caractères)(Obligatoire)Le nom de l'option.

$valeur

(chaîne de caractères)(Obligatoire)La valeur non ventilée.

Retour

(chaîne de caractères) Valeur assainie.

Plus d'informations

Après que la valeur ait été traitée par les fonctions de l'instruction switch, elle passera par un filtre sanitize_option_$option.

De nouvelles options peuvent être définies en ajoutant un filtre sanitize_option_$option approprié (par exemple, 'sanitize_option_avatar' pour un filtre pour une option 'avatar').

Options existantes gérées par sanitize_option() :

admin_email
nouveau_admin_email
taille de la vignette_w
taille de la vignette_h
taille_moyenne_w
taille_moyenne_h
grande_taille_w
grande_taille_h
mailserver_port
commentaires_max_liens
page_on_front
page_pour_posts
rss_excerpt_length
catégorie par défaut
catégorie_email_par défaut
catégorie_lien par défaut
close_comments_days_old
commentaires_par_page
profondeur des commentaires par fil
utilisateurs_can_register
début_de_semaine
messages_par_page
messages_par_rss
statut_ping_par défaut
statut_commentaire par défaut
blogdescription
nom de blog
blog_charset
blog_public
date_format
format de l'heure
mailserver_url
mailserver_login
mailserver_pass
chemin de téléchargement
ping_sites
gmt_offset
siteurl
domicile
WPLANG
noms_illégaux
domaines_email_limités
domaines_email_interdits
timezone_string
permalink_structure
catégorie_base
tag_base

Source

Fichier : wp-includes/formatting.php

functionsanitize_option($option,$value){global$wpdb;$original_value=$value;$error='';switch($option){case'admin_email':case'new_admin_email':$value=$wpdb->strip_invalid_text_for_column($wpdb->options,'option_value',$value);if(is_wp_error($value)){$error=$value->get_error_message();}else{$value=sanitize_email($value);if(!is_email($value)){$error=__('The email address entered did not appear to be a valid email address. Please enter a valid email address.');}}break;case'thumbnail_size_w':case'thumbnail_size_h':case'medium_size_w':case'medium_size_h':case'medium_large_size_w':case'medium_large_size_h':case'large_size_w':case'large_size_h':case'mailserver_port':case'comment_max_links':case'page_on_front':case'page_for_posts':case'rss_excerpt_length':case'default_category':case'default_email_category':case'default_link_category':case'close_comments_days_old':case'comments_per_page':case'thread_comments_depth':case'users_can_register':case'start_of_week':case'site_icon':$value=absint($value);break;case'posts_per_page':case'posts_per_rss':$value=(int)$value;if(empty($value)){$value=1;}if($value<-1){$value=abs($value);}break;case'default_ping_status':case'default_comment_status':// Options that if not there have 0 value but need to be something like "closed".if('0'==$value||''===$value){$value='closed';}break;case'blogdescription':case'blogname':$value=$wpdb->strip_invalid_text_for_column($wpdb->options,'option_value',$value);if($value!==$original_value){$value=$wpdb->strip_invalid_text_for_column($wpdb->options,'option_value',wp_encode_emoji($original_value));}if(is_wp_error($value)){$error=$value->get_error_message();}else{$value=esc_html($value);}break;case'blog_charset':$value=preg_replace('/[^a-zA-Z0-9_-]/','',$value);// Strips slashes.break;case'blog_public':// This is the value if the settings checkbox is not checked on POST. Don't rely on this.if(null===$value){$value=1;}else{$value=(int)$value;}break;case'date_format':case'time_format':case'mailserver_url':case'mailserver_login':case'mailserver_pass':case'upload_path':$value=$wpdb->strip_invalid_text_for_column($wpdb->options,'option_value',$value);if(is_wp_error($value)){$error=$value->get_error_message();}else{$value=strip_tags($value);$value=wp_kses_data($value);}break;case'ping_sites':$value=explode("n",$value);$value=array_filter(array_map('trim',$value));$value=array_filter(array_map('esc_url_raw',$value));$value=implode("n",$value);break;case'gmt_offset':$value=preg_replace('/[^0-9:.-]/','',$value);// Strips slashes.break;case'siteurl':$value=$wpdb->strip_invalid_text_for_column($wpdb->options,'option_value',$value);if(is_wp_error($value)){$error=$value->get_error_message();}else{if(preg_match('#http(s?)://(.+)#i',$value)){$value=esc_url_raw($value);}else{$error=__('The WordPress address you entered did not appear to be a valid URL. Please enter a valid URL.');}}break;case'home':$value=$wpdb->strip_invalid_text_for_column($wpdb->options,'option_value',$value);if(is_wp_error($value)){$error=$value->get_error_message();}else{if(preg_match('#http(s?)://(.+)#i',$value)){$value=esc_url_raw($value);}else{$error=__('The Site address you entered did not appear to be a valid URL. Please enter a valid URL.');}}break;case'WPLANG':$allowed=get_available_languages();if(!is_multisite()&&defined('WPLANG')&&''!==WPLANG&&'en_US'!==WPLANG){$allowed[]=WPLANG;}if(!in_array($value,$allowed,true)&&!empty($value)){$value=get_option($option);}break;case'illegal_names':$value=$wpdb->strip_invalid_text_for_column($wpdb->options,'option_value',$value);if(is_wp_error($value)){$error=$value->get_error_message();}else{if(!is_array($value)){$value=explode(' ',$value);}$value=array_values(array_filter(array_map('trim',$value)));if(!$value){$value='';}}break;case'limited_email_domains':case'banned_email_domains':$value=$wpdb->strip_invalid_text_for_column($wpdb->options,'option_value',$value);if(is_wp_error($value)){$error=$value->get_error_message();}else{if(!is_array($value)){$value=explode("n",$value);}$domains=array_values(array_filter(array_map('trim',$value)));$value=array();foreach($domainsas$domain){if(!preg_match('/(--|..)/',$domain)&&preg_match('|^([a-zA-Z0-9-.])+$|',$domain)){$value[]=$domain;}}if(!$value){$value='';}}break;case'timezone_string':$allowed_zones=timezone_identifiers_list();if(!in_array($value,$allowed_zones,true)&&!empty($value)){$error=__('The timezone you have entered is not valid. Please select a valid timezone.');}break;case'permalink_structure':case'category_base':case'tag_base':$value=$wpdb->strip_invalid_text_for_column($wpdb->options,'option_value',$value);if(is_wp_error($value)){$error=$value->get_error_message();}else{$value=esc_url_raw($value);$value=str_replace('http://','',$value);}if('permalink_structure'===$option&&''!==$value&&!preg_match('/%[^/%]+%/',$value)){$error=sprintf(/* translators: %s: Documentation URL. */__('A structure tag is required when using custom permalinks. Learn more'),__('https://wordpress.org/support/article/using-permalinks/#choosing-your-permalink-structure'));}break;case'default_role':if(!get_role($value)&&get_role('subscriber')){$value='subscriber';}break;case'moderation_keys':case'disallowed_keys':$value=$wpdb->strip_invalid_text_for_column($wpdb->options,'option_value',$value);if(is_wp_error($value)){$error=$value->get_error_message();}else{$value=explode("n",$value);$value=array_filter(array_map('trim',$value));$value=array_unique($value);$value=implode("n",$value);}break;}if(!empty($error)){$value=get_option($option);if(function_exists('add_settings_error')){add_settings_error($option,"invalid_{$option}",$error);}}/**
	 * Filters an option value following sanitization.
	 *
	 * @since 2.3.0
	 * @since 4.3.0 Added the `$original_value` parameter.
	 *
	 * @param string $value          The sanitized option value.
	 * @param string $option         The option name.
	 * @param string $original_value The original value passed to the function.
	 */returnapply_filters("sanitize_option_{$option}",$value,$option,$original_value);}

Related

Utilise

Utilisations Description
wp-includes/wp-db.php : wpdb::strip_invalid_text_for_column()

Dépouille les caractères invalides de la chaîne de caractères pour une table et une colonne données.

wp-includes/formatting.php : wp_encode_emoji()

Convertit les caractères emoji en leur entité HTML équivalente.

wp-admin/includes/template.php : add_settings_error()

Enregistre une erreur de paramétrage à afficher à l'utilisateur.

wp-includes/capabilities.php : get_role()

Récupération de l'objet rôle.

wp-includes/l10n.php : get_available_languages()

Obtenir toutes les langues disponibles en fonction de la présence de fichiers *.mo dans un répertoire donné.

wp-includes/l10n.php : __()

Récupérer la traduction de $text.

wp-includes/formatting.php : sanitize_option_{$option}

Filtre une valeur d'option suite à une sanitisation.

wp-includes/formatting.php : esc_html()

Échappement pour les blocs HTML.

wp-includes/formatting.php : esc_url_raw()

Exécute esc_url() pour l'utilisation de la base de données.

wp-includes/formatting.php : sanitize_email()

Supprime tous les caractères qui ne sont pas autorisés dans un courriel.

wp-includes/formatting.php : is_email()

Vérifie qu'un courriel est valide.

wp-includes/kses.php : wp_kses_data()

Assainir le contenu avec les règles HTML KSES autorisées.

wp-includes/load.php : is_multisite()

Si Multisite est activé.

wp-includes/functions.php : absint()

Convertit une valeur en un nombre entier non négatif.

wp-includes/plugin.php : apply_filters()

Appelle les fonctions de rappel qui ont été ajoutées à un crochet de filtre.

wp-includes/option.php : get_option()

Récupère une valeur d'option en fonction d'un nom d'option.

wp-includes/load.php : is_wp_error()

Vérifie si la variable donnée est une erreur WordPress.

Utilisé par

Utilisé par Description
wp-includes/option.php : update_network_option()

Met à jour la valeur d'une option réseau qui a déjà été ajoutée.

wp-includes/option.php : add_network_option()

Ajoute une nouvelle option de réseau.

wp-admin/includes/template.php : get_settings_errors()

Récupère les erreurs de paramétrage enregistrées par add_settings_error().

wp-admin/includes/ajax-actions.php : wp_ajax_date_format()

Gestionnaire Ajax pour le formatage de la date.

wp-admin/includes/ajax-actions.php : wp_ajax_time_format()

Gestionnaire Ajax pour le formatage de l'heure.

wp-includes/option.php : update_option()

Met à jour la valeur d'une option qui a déjà été ajoutée.

wp-includes/option.php : add_option()

Ajoute une nouvelle option.

Changelog

Version Description
2.0.5 Introduit.