{"id":36878,"date":"2015-03-28T22:59:00","date_gmt":"2015-03-28T22:59:00","guid":{"rendered":"https:\/\/contactform7.com\/?p=36878"},"modified":"2020-12-02T08:39:35","modified_gmt":"2020-12-01T23:39:35","slug":"custom-validation","status":"publish","type":"post","link":"https:\/\/contactform7.com\/es\/2015\/03\/28\/custom-validation\/","title":{"rendered":"Validaci\u00f3n personalizada"},"content":{"rendered":"\n\n\n\n<p>Contact Form 7 proporciona varios tipos de validaci\u00f3n de los datos de entrada del usuario por defecto, que incluyen:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>\u00bfSe ha completado un campo obligatorio?<\/li><li>\u00bfUn campo de correo electr\u00f3nico tiene una direcci\u00f3n de correo electr\u00f3nico con el formato correcto?<\/li><li>\u00bfUn archivo subido est\u00e1 en un tipo y tama\u00f1o de archivo aceptable?<\/li><\/ul>\n\n\n\n<p>Tambi\u00e9n puedes a\u00f1adir tu propia validaci\u00f3n personalizada.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Para demostrar c\u00f3mo implementar una validaci\u00f3n personalizada, hagamos un campo de confirmaci\u00f3n del correo electr\u00f3nico. Este campo te solicita que introduzcas la direcci\u00f3n de correo electr\u00f3nico que introdujiste en otro campo del formulario. Se comparan las dos direcciones de correo electr\u00f3nico que has introducido y, si no son id\u00e9nticas, se mostrar\u00e1 un mensaje de error de validaci\u00f3n para alertarte.<\/p>\n\n\n\n<p>Contact Form 7 no es compatible con campos de confirmaci\u00f3n de correo electr\u00f3nico por defecto (porque creo que es rid\u00edculo: \u00bfqui\u00e9n quiere escribir la misma direcci\u00f3n dos veces? La gente sabe copiar y pegar). Aun as\u00ed, puede ser un buen ejemplo de validaci\u00f3n personalizada.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Validaci\u00f3n como filtro<\/h4>\n\n\n\n<p>En Contact Form 7, se implementa una validaci\u00f3n de los datos de entrada del usuario como una funci\u00f3n de filtro. El gancho de filtro usado para la validaci\u00f3n var\u00eda seg\u00fan el tipo de etiqueta de formulario y se determina como: <code>wpcf7_validate_<\/code> + <em>{tipo de etiqueta de formulario}<\/em>. Por lo tanto, para las etiquetas de formulario de <em>texto<\/em>, se usa el gancho de filtro <code>wpcf7_validate_text<\/code>. Del mismo modo, <code>wpcf7_validate_email*<\/code> se utiliza para las etiquetas de formulario de <em>email*<\/em>.<\/p>\n\n\n\n<p>Supongamos que tienes los siguientes campos de correo electr\u00f3nico en un formulario:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Correo electr\u00f3nico:              [email* your-email]\nConfirmar el correo electr\u00f3nico: [email* your-email-confirm]<\/pre>\n\n\n\n<p>El fragmento de c\u00f3digo a continuaci\u00f3n muestra un c\u00f3digo que verifica si los dos campos tienen valores id\u00e9nticos.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_filter( &#039;wpcf7_validate_email*&#039;, &#039;custom_email_confirmation_validation_filter&#039;, 20, 2 );\n \nfunction custom_email_confirmation_validation_filter( $result, $tag ) {\n  if ( &#039;your-email-confirm&#039; == $tag-&gt;name ) {\n    $your_email = isset( $_POST&#x5B;&#039;your-email&#039;] ) ? trim( $_POST&#x5B;&#039;your-email&#039;] ) : &#039;&#039;;\n    $your_email_confirm = isset( $_POST&#x5B;&#039;your-email-confirm&#039;] ) ? trim( $_POST&#x5B;&#039;your-email-confirm&#039;] ) : &#039;&#039;;\n \n    if ( $your_email != $your_email_confirm ) {\n      $result-&gt;invalidate( $tag, &quot;\u00bfEst\u00e1s seguro(a) que esta es la direcci\u00f3n correcta?&quot; );\n    }\n  }\n \n  return $result;\n}\n<\/pre><\/div>\n\n\n<p>Se pasar\u00e1n dos par\u00e1metros a la funci\u00f3n de filtro: <code>$result<\/code> y <code>$tag<\/code>. <code>$result<\/code> es una instancia de la clase <code>WPCF7_Validation<\/code> que gestiona una secuencia de procesos de validaci\u00f3n. <code>$tag<\/code> es una instancia de la clase <code>WPCF7_FormTag<\/code> que apareci\u00f3 en los <a href=\"https:\/\/contactform7.com\/es\/2015\/02\/27\/using-values-from-a-form-tag\/\">fragmentos de c\u00f3digo anteriores<\/a>.<\/p>\n\n\n\n<p>Mira dentro de la funci\u00f3n de filtro. Primero, se verifica el nombre de la etiqueta de formulario para asegurarse de que la validaci\u00f3n se aplica solo al campo espec\u00edfico (<em>your-email-confirm<\/em>).<\/p>\n\n\n\n<p>Luego se comparan los dos valores de los campos de correo electr\u00f3nico y, si no coinciden, se llamar\u00e1 <code>$result-&gt;invalidate()<\/code>. Debes pasar dos par\u00e1metros al m\u00e9todo <code>invalidate()<\/code>: el primer par\u00e1metro debe ser la variable <code>$tag<\/code> y el segundo par\u00e1metro es el mensaje de error de validaci\u00f3n que deseas que muestre el campo.<\/p>\n\n\n\n<p>Por \u00faltimo, no olvides devolver <code>$result<\/code>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Contact Form 7 proporciona varios tipos de validaci\u00f3n de los datos de entrada del usuario por defecto, que incluyen: \u00bfSe ha completado un campo obligatorio? \u00bfUn campo de correo electr\u00f3nico tiene una direcci\u00f3n de correo electr\u00f3nico con el formato correcto? \u00bfUn archivo subido est\u00e1 en un tipo y tama\u00f1o de archivo aceptable? Tambi\u00e9n puedes a\u00f1adir &hellip; <a href=\"https:\/\/contactform7.com\/es\/2015\/03\/28\/custom-validation\/\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">Validaci\u00f3n personalizada<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_locale":"es_ES","_original_post":"13626","footnotes":"","jetpack_post_was_ever_published":false},"categories":[19],"tags":[],"class_list":["post-36878","post","type-post","status-publish","format-standard","hentry","category-cookbook","es-ES"],"jetpack_featured_media_url":"","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/posts\/36878","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/comments?post=36878"}],"version-history":[{"count":0,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/posts\/36878\/revisions"}],"wp:attachment":[{"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/media?parent=36878"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/categories?post=36878"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/tags?post=36878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}