he leído el referencia de esta función en WordPress pero todavía no entiendo lo que realmente hace esta función.
Estoy leyendo un tutorial sobre cómo crear un cuadro meta en wordpress y tengo este código dentro de la función que guarda los datos:
if ( !wp_verify_nonce( $_POST[$meta_box['name'].'_noncename'], plugin_basename(__FILE__) )) {
return $post_id;
}
¿Alguien puede explicar brevemente cuál es el significado de wp_verify_nonce() ?
El nonce es un ‘número usado una vez’, un código que WP usa para asegurarse de que los datos POST provengan de un lugar seguro. Esto es útil para asegurarse de que su complemento no termine digiriendo datos de una fuente no segura (ver Falsificación de solicitud entre sitios).
Esta entrada de blog de Mark Jaquith es útil para entenderlos.
[nonces] son exclusivos de la instalación de WordPress, del usuario de WordPress, de la acción, del objeto de la acción y del momento de la acción (ventana de 24 horas). Eso significa que si alguna de estas cosas cambia, el nonce no es válido. Entonces, si (de alguna manera) intercepta un nonce que estoy usando, en primer lugar, solo tendrá 24 horas para usar esta clave para intentar engañarme.
Para crear un nonce debes dar wp_create_nonce
una determinada cadena, proporcionando el ‘contexto’ para el nonce. Te devuelve una cadena: el mismo nonce. Luego incluye este nonce como parte de su solicitud POST. La página receptora debe crear un nonce propio, usando el mismo contexto, y ver si coinciden.
En este caso, el contexto dado es plugin_basename(__FILE__)
. Esto generará la misma cadena cada vez que se llame desde el mismo complemento (ver aquí).
Cuando tu wp_verify_nonce
recibe un nonce creado en las mismas circunstancias especificadas por Mark, con la misma cadena de contexto, devuelve verdadero.
En breve:
!wp_verify_nonce
devuelve verdadero si wp_verify_nonce devuelve falso.
($_POST[$meta_box['name'].'_noncename'],
primer argumento a wp_verify_nonce
: el nonce para comprobar. Este código obtiene el nonce de la solicitud de publicación, almacenada en $_POST global.
plugin_basename(__FILE__) )
Segundo argumento a wp_verify_nonce
: el contexto para generar el nuevo nonce contra el cual se verificará el primero.
{ return $post_id; }
Si el nonce no coincide, deje de ejecutar la función actual, devolviendo la variable $post_id
.