je ne comprends pas vraiment pourquoi vérifier si la fonction nonce existe avant de l'exécuter ...
if ( function_exists('wp_nonce_field') )
wp_nonce_field('gmp_nonce_check');
je comprends sa compatibilité ascendante ...
Notez également que vous vérifiez que la fonction
wp_nonce_field
existe avant d'essayer de l'appeler pour des raisons de compatibilité ascendante.
mais ça ne casse pas quand même si je retourne après
if ( isset($_POST['submit']) ) {
check_admin_referer('gmp_nonce_check');
La réponse est que vous ne devriez pas vérifier si wp_nonce_field () existe avant de l’utiliser!
La recommandation d'effectuer la vérification suppose que vous souhaitez être compatible avec les versions de WordPress antérieures à l'existence de la fonction. Si Rarst a raison de dire qu'il a été introduit dans la version 2.0.4, vous ne devriez PAS prendre en charge les versions antérieures, car elles ne sont absolument pas sécurisées et toute personne les utilisant doit mettre à niveau RIGHT NOW.
Généralement, vous ne devriez pas avoir à vérifier l'existence de fonctions de WP, contrairement aux fonctions de plug-ins qui pourraient ne pas être activées.
Où avez-vous vu ce commentaire que vous avez cité? Il devrait être supprimé.
Si je comprends bien votre question - vous demandez pourquoi il n’est pas nécessaire de vérifier si check_admin_referer () est également défini?
Pour autant que je voie dans la documentation, cette fonction est beaucoup plus ancienne (depuis WP 1.2.0) que wp_nonce_field () (depuis WP 2.0.4). Donc, je suppose que vous êtes beaucoup moins susceptible de rencontrer une version aussi ancienne qu’elle n’a pas check_admin_referer ().
Vous vérifiez l'existence d'une fonction destinée à éviter une erreur fatale et l'arrêt de l'application ultérieure lorsque votre code est exécuté sur une version de WordPress n'incluant pas la fonction que vous tentez d'utiliser.
Est-ce que cela garantit une compatibilité ascendante? Absolument. Plus important encore, cette vérification empêche votre code de faire planter l’application entière lorsque votre code est exécuté:
La gestion des erreurs doit être "élégante" dans tout système - cela signifie que l'application doit savoir détecter ses propres erreurs et les traiter de manière appropriée avec une interruption minimale pour les utilisateurs finaux. Plus d’informations sur http://www.devshed.com/c/a/PHP/PHP-Application-Development-Part-Two/2/#wIxuV7yhLhBTU1UZ.99
Ainsi, dans votre code, vous pouvez effectuer les opérations suivantes:
if ( function_exists('wp_nonce_field') ) {
wp_nonce_field('gmp_nonce_check');
} else {
//do nothing
exit() ;
}