{"id":37278,"date":"2015-01-10T08:51:00","date_gmt":"2015-01-09T23:51:00","guid":{"rendered":"https:\/\/contactform7.com\/?p=37278"},"modified":"2020-09-04T08:55:59","modified_gmt":"2020-09-03T23:55:59","slug":"adding-a-custom-form-tag","status":"publish","type":"post","link":"https:\/\/contactform7.com\/es\/2015\/01\/10\/adding-a-custom-form-tag\/","title":{"rendered":"A\u00f1adir una etiqueta de formulario personalizada"},"content":{"rendered":"\n\n\n\n<p>Esta es la primera entrada de una serie de art\u00edculos para ayudar a los desarrolladores a personalizar Contact Form 7.<\/p>\n\n\n\n<p>El primer tema que trataremos ser\u00e1 c\u00f3mo ampliar las <a href=\"http:\/\/contactform7.com\/es\/tag-syntax\/\">etiquetas de formulario<\/a> de Contact Form 7. Como probablemente ya sabes, las etiquetas de formulario son c\u00f3digos en un formato espec\u00edfico entre corchetes, que generalmente representan controles de formulario como campos de entrada de texto y botones de env\u00edo. Actualmente, Contact Form 7 incluye 30 tipos diferentes de etiquetas de formulario por defecto.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Estos son ejemplos de etiquetas de formulario t\u00edpicas:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">[text* tu-nombre]\n[textarea tu-mensaje]\n[submit \"Enviar\"]<\/pre>\n\n\n\n<p>Se parecen a los <a href=\"http:\/\/codex.wordpress.org\/Shortcode\">shortcodes<\/a> de WordPress, pero a diferencia de estos, las etiquetas de formulario solo funcionan dentro del \u00e1rea de edici\u00f3n de formularios de Contact Form 7.<\/p>\n\n\n\n<p>T\u00fa tambi\u00e9n puedes a\u00f1adir tus propias etiquetas de formulario personalizadas. Debes seguir estos dos pasos para hacerlo: (1) registrar los tipos de etiquetas de formulario y una funci\u00f3n de retorno correspondiente, y (2) definir la funci\u00f3n de retorno. Veamos cada paso.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">wpcf7_add_form_tag<\/h4>\n\n\n\n<p>Para registrar tipos de etiquetas de formulario, llama a la funci\u00f3n <code>wpcf7_add_form_tag()<\/code>. Esta funci\u00f3n acepta tres par\u00e1metros, dos obligatorios y uno opcional.<\/p>\n\n\n\n<p>El primer par\u00e1metro es un valor de tipo cadena que contiene el tipo de etiqueta. La primera palabra en una etiqueta de formulario es su tipo. En los ejemplos presentados anteriormente, \u00abtext*\u00bb, \u00abtextarea\u00bb y \u00absubmit\u00bb son tipos. Puedes usar letras min\u00fasculas ([a-z]), d\u00edgitos ([0-9]), guiones bajos (\u00ab_\u00bb) y asteriscos (\u00ab*\u00bb) en un tipo de etiqueta de formulario. Los tipos de etiquetas con un asterisco al final (p. ej., \u00abtext*\u00bb, \u00abemail*\u00bb) se usan para hacer que los campos de entrada sean obligatorios.<\/p>\n\n\n\n<p>Si tienes dos o m\u00e1s tipos de etiquetas de formulario que comparten la misma funci\u00f3n de retorno, es posible que desees registrarlas juntas. En ese caso, especifica un <em>array<\/em> de cadenas como primer par\u00e1metro.<\/p>\n\n\n\n<p>El segundo par\u00e1metro es una funci\u00f3n de retorno que se llama cuando Contact Form 7 analiza la etiqueta de formulario. Volveremos a las funciones de retorno m\u00e1s adelante.<\/p>\n\n\n\n<p>El tercer par\u00e1metro opcional es un <em>array <\/em>de <em>caracter\u00edsticas<\/em> que admite el tipo de etiqueta de formulario. Por ejemplo, un tipo de etiqueta de formulario cuyas instancias tengan un nombre compatible con el atributo <code>name-attr<\/code>.<\/p>\n\n\n\n<p>El nombre de una etiqueta de formulario es la segunda palabra en la etiqueta de formulario. En los ejemplos anteriores, \u00abtu-nombre\u00bb y \u00abtu-mensaje\u00bb son nombres. Algunas etiquetas de formulario no tienen nombres, como <code>[submit \"Enviar\"]<\/code>.<\/p>\n\n\n\n<p>Para los tipos de etiquetas de formulario que sean compatibles con el atributo <code>name-attr<\/code>, escribe <code>array( 'name-attr' => true)<\/code> como tercer par\u00e1metro de <code>wpcf7_add_form_tag()<\/code>.<\/p>\n\n\n\n<p>Ten en cuenta que debes usar el gancho de acci\u00f3n <code>wpcf7_init<\/code> cuando llames a <code>wpcf7_add_form_tag()<\/code>. Para referencia, consulta c\u00f3mo Contact Form 7 registra las etiquetas de formulario por defecto.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_action( &#039;wpcf7_init&#039;, &#039;wpcf7_add_form_tag_text&#039; );\n\nfunction wpcf7_add_form_tag_text() {\n  wpcf7_add_form_tag(\n    array( &#039;text&#039;, &#039;text*&#039;, &#039;email&#039;, &#039;email*&#039;, &#039;url&#039;, &#039;url*&#039;, &#039;tel&#039;, &#039;tel*&#039; ),\n    &#039;wpcf7_text_form_tag_handler&#039;,\n    array( &#039;name-attr&#039; =&gt; true )\n  );\n}\n<\/pre><\/div>\n\n\n<h4 class=\"wp-block-heading\">Funci\u00f3n de retorno<\/h4>\n\n\n\n<p>El siguiente paso es definir la funci\u00f3n de retorno. Esta funci\u00f3n toma un objeto <code>WPCF7_FormTag<\/code> como \u00fanico argumento, que representa la informaci\u00f3n de una etiqueta de formulario actual, incluyendo su tipo, nombre, opciones, valores, etc.<\/p>\n\n\n\n<p>La funci\u00f3n de retorno debe devolver un valor de tipo texto. Por lo general, devuelven fragmentos de c\u00f3digo HTML que representan un control de formulario. El texto devuelto reemplaza la etiqueta de formulario cuando Contact Form 7 genera un formulario a partir de una plantilla que contiene etiquetas de formulario.<\/p>\n\n\n\n<p>Como demostraci\u00f3n, creemos una etiqueta de formulario simple que muestre la hora actual (llam\u00e9mosla \u00ab[reloj]\u00bb).<\/p>\n\n\n\n<p>A\u00f1ade el siguiente c\u00f3digo en un lugar apropiado. Muchos desarrolladores prefieren usar el archivo functions.php del tema para peque\u00f1os fragmentos de c\u00f3digo personalizados. No edites archivos directamente en la carpeta del plugin (<code>contact-form-7<\/code>) porque corres el riesgo de romper el c\u00f3digo de Contact Form 7 y adem\u00e1s perder\u00e1s tu personalizaci\u00f3n cuando se actualice el plugin.<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: php; title: ; notranslate\" title=\"\">\nadd_action( 'wpcf7_init', 'custom_add_form_tag_clock' );\n\nfunction custom_add_form_tag_clock() {\n  wpcf7_add_form_tag( 'reloj', 'custom_clock_form_tag_handler' ); \/\/ \u00abreloj\u00bb es el tipo de etiqueta de formulario\n}\n\nfunction custom_clock_form_tag_handler( $tag ) {\n  return date_i18n( get_option( 'time_format' ) );\n}\n<\/pre><\/div>\n\n\n<p>Luego, a\u00f1ade esta l\u00ednea a tu \u00e1rea de formulario:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Hora actual: [reloj]<\/pre>\n\n\n\n<p>Si funciona correctamente, deber\u00edas ver una l\u00ednea como esta en el formulario:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Hora actual: 12:16 pm<\/code><\/pre>\n\n\n\n<p>Eso es todo. Obviamente, esta demostraci\u00f3n de \u00ab[reloj]\u00bb es demasiado sencilla para un uso pr\u00e1ctico, pero es suficiente para mostrar el concepto de las etiquetas de formulario de Contact Form 7. Para mejorarlas y hacerlas m\u00e1s adecuadas para un uso pr\u00e1ctico, deber\u00e1s aprender:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>C\u00f3mo recuperar informaci\u00f3n de componentes de etiquetas de formulario y construir controles de formulario m\u00e1s complejos utilizando esta informaci\u00f3n.<\/li><li>C\u00f3mo validar la entrada del usuario y, si no es v\u00e1lida, c\u00f3mo mostrar un error de validaci\u00f3n.<\/li><\/ul>\n\n\n\n<p>En los pr\u00f3ximos art\u00edculos cubriremos estas \u00e1reas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Esta es la primera entrada de una serie de art\u00edculos para ayudar a los desarrolladores a personalizar Contact Form 7. El primer tema que trataremos ser\u00e1 c\u00f3mo ampliar las etiquetas de formulario de Contact Form 7. Como probablemente ya sabes, las etiquetas de formulario son c\u00f3digos en un formato espec\u00edfico entre corchetes, que generalmente representan &hellip; <a href=\"https:\/\/contactform7.com\/es\/2015\/01\/10\/adding-a-custom-form-tag\/\" class=\"more-link\">Seguir leyendo <span class=\"screen-reader-text\">A\u00f1adir una etiqueta de formulario 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":"12902","footnotes":"","jetpack_post_was_ever_published":false},"categories":[19],"tags":[],"class_list":["post-37278","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\/37278","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=37278"}],"version-history":[{"count":0,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/posts\/37278\/revisions"}],"wp:attachment":[{"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/media?parent=37278"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/categories?post=37278"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/contactform7.com\/wp-json\/wp\/v2\/tags?post=37278"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}