{"id":233443,"date":"2023-02-14T18:12:00","date_gmt":"2023-02-14T15:12:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233443"},"modified":"2022-11-10T23:43:00","modified_gmt":"2022-11-10T20:43:00","slug":"como-completar-dinamicamente-la-configuracion-avanzada-de-campos-personalizados","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/como-completar-dinamicamente-la-configuracion-avanzada-de-campos-personalizados\/","title":{"rendered":"C\u00f3mo completar din\u00e1micamente la configuraci\u00f3n avanzada de campos personalizados"},"content":{"rendered":"\n<p>Con algo de c\u00f3digo PHP, es realmente f\u00e1cil completar din\u00e1micamente un valor o una opci\u00f3n <a href=\"https:\/\/www.advancedcustomfields.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">de Campos personalizados avanzados<\/a> (ACF). Puede hacer esto para cualquier tipo de entrada, incluidas las opciones de radio, casillas de verificaci\u00f3n y similares. En este post veremos c\u00f3mo.<\/p>\n<h2>El filtro<\/h2>\n<p>Advanced Custom Fields ofrece un filtro llamado <code>[acf\/load_field](https:\/\/www.advancedcustomfields.com\/resources\/acf-load_field\/)<\/code>. Puede utilizar este filtro de varias maneras diferentes. O filtre <code>acf\/load_field<\/code>para aplicarlo a todo tipo de campos o incluya c\u00f3digo dentro de su funci\u00f3n enganchada para averiguar qu\u00e9 tipo de campo o nombre desea. O puede especificar el tipo de campo (<code>acf\/load_field\/type=&lt;type&gt;<\/code>), el nombre (<code>acf\/load_field\/name=&lt;name&gt;<\/code>) o la clave (<code>acf\/load_field\/key=&lt;key&gt;<\/code>).<\/p>\n<p>Supongamos que creamos un campo de texto as\u00ed:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bc7809d8.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bc7809d8.png\" alt=\"C\u00f3mo completar din\u00e1micamente la configuraci\u00f3n avanzada de campos personalizados\" ><\/a><\/p>\n<p>Podr\u00edamos apuntar a esto por <code>acf\/load_field\/name=dyn_pop_example<\/code>(se dirige solo a este campo espec\u00edfico), <code>acf\/load_field\/type=text<\/code>(se aplica a todos los campos de tipo texto) o <code>acf\/load_field<\/code>(se aplica a todos los campos de cualquier tipo o nombre). Al usar los dos \u00faltimos filtros, por supuesto, puede dirigirse dentro de la funci\u00f3n por informaci\u00f3n de campo espec\u00edfica, como el nombre. Cada campo en ACF tambi\u00e9n tiene una clave \u00fanica, pero est\u00e1n ocultos y son principalmente para uso interno de ACF.<\/p>\n<p>El filtro proporciona una variable; la matriz de campo. Esta matriz le brinda toda la informaci\u00f3n sobre el campo actual. Lo que hace es simplemente cambiar la informaci\u00f3n en la matriz y devolver la matriz de campo modificada. Seg\u00fan el tipo de campo, los elementos de la matriz difieren. Por ejemplo, los tipos de campos de opci\u00f3n m\u00faltiple como select y radioboxes tendr\u00e1n un elemento de matriz &#8216; <code>choices<\/code>&#8216; que los campos de, por ejemplo, tipo de texto no tendr\u00e1n. Le recomiendo que haga una <code>var_dump()<\/code>de las matrices proporcionadas para ver a qu\u00e9 tipo de informaci\u00f3n tiene acceso.<\/p>\n<p>\u00a1Empecemos a investigar un c\u00f3digo real!<\/p>\n<h2>Poblaci\u00f3n: ejemplos simples<\/h2>\n<p>Establecer el valor predeterminado de una entrada de texto se ver\u00eda as\u00ed:<\/p>\n<pre><code>add_filter('acf\/load_field\/name=dyn_pop_example', function($field) {\n    $field['default_value'] = __('This is default value', 'txtdomain');\n    return $field;\n});<\/code><\/pre>\n<p>Dirigimos nuestra entrada de texto con el nombre <code>dyn_pop_example<\/code>y establecemos su valor predeterminado (tecla &#8216; <code>default_value<\/code>&#8216;) en una cadena de nuestra elecci\u00f3n. El campo se mostrar\u00e1 as\u00ed:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bc94e2b7.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bc94e2b7.png\" alt=\"C\u00f3mo completar din\u00e1micamente la configuraci\u00f3n avanzada de campos personalizados\" ><\/a><\/p>\n<p>Puede modificar cualquier configuraci\u00f3n del campo. En el siguiente ejemplo, configuramos el marcador de posici\u00f3n del texto y las instrucciones:<\/p>\n<pre><code>add_filter('acf\/load_field\/name=dyn_pop_example', function($field) {\n    $field['placeholder'] = __('Type in here', 'txtdomain');\n    $field['instructions'] = __('Some instructions coming from code', 'txtdomain');\n    return $field;\n});<\/code><\/pre>\n<p>Lo que har\u00e1 que el campo se muestre as\u00ed:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bcabf334.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bcabf334.png\" alt=\"C\u00f3mo completar din\u00e1micamente la configuraci\u00f3n avanzada de campos personalizados\" ><\/a><\/p>\n<h2>Completar opciones<\/h2>\n<p>Si desea completar din\u00e1micamente las opciones de un campo de selecci\u00f3n, opci\u00f3n o casilla de verificaci\u00f3n, h\u00e1galo en el elemento de clave de matriz &#8216; <code>choices<\/code>&#8216;. Este <code>choices<\/code>elemento &#8216; &#8216; se aplica a todos los campos de tipo select, radio y checkbox.<\/p>\n<p>El <code>choices<\/code>elemento &#8216; &#8216; debe ser una matriz de pares clave + valor. Las claves son los valores (que se guardar\u00e1n) y los valores son la etiqueta que aparece como opci\u00f3n.<\/p>\n<p>Supongamos que cambiamos nuestro campo a una selecci\u00f3n. Puede dejar las opciones vac\u00edas, ya que se establecer\u00e1n a trav\u00e9s de nuestro c\u00f3digo.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bcc5cf44.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bcc5cf44.png\" alt=\"C\u00f3mo completar din\u00e1micamente la configuraci\u00f3n avanzada de campos personalizados\" ><\/a><\/p>\n<p>Para completar las opciones de selecci\u00f3n, lo hacemos as\u00ed:<\/p>\n<pre><code>add_filter('acf\/load_field\/name=dyn_pop_example', function($field) {\n    $choices = [\n        'red' =&gt; __('Red Color', 'txtdomain'),\n        'blue' =&gt; __('Blue Color', 'txtdomain'),\n        'green' =&gt; __('Green Color', 'txtdomain')\n    ];\n    $field['choices'] = $choices;\n    $field['default_value'] = 'blue';\n    return $field;\n});<\/code><\/pre>\n<p>En l\u00ednea <code>#2 - #6<\/code>simplemente definimos una matriz de opciones. Modifique esto a sus necesidades. En l\u00ednea <code>#7<\/code>asignamos las opciones del campo a nuestra matriz. Por si acaso, tambi\u00e9n establecemos el valor predeterminado del campo. Esto no es necesario: sin la l\u00ednea, <code>#8<\/code>la selecci\u00f3n simplemente elegir\u00eda autom\u00e1ticamente la primera opci\u00f3n en la matriz (&#8216;roja&#8217;).<\/p>\n<p>El c\u00f3digo anterior representar\u00e1 el campo as\u00ed:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bce2ff52.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-153292-61e50bce2ff52.png\" alt=\"C\u00f3mo completar din\u00e1micamente la configuraci\u00f3n avanzada de campos personalizados\" ><\/a><\/p>\n<p>Las opciones dependen de usted, todo lo que debe cuidar es proporcionar una matriz adecuada de clave + valor para el <code>choices<\/code>elemento &#8216; &#8216; del campo. Como ejemplo b\u00e1sico, este ejemplo de c\u00f3digo muestra c\u00f3mo puede convertir un campo de selecci\u00f3n normal en una selecci\u00f3n de publicaciones.<\/p>\n<pre><code>add_filter('acf\/load_field\/name=dyn_pop_example', function($field) {\n    $posts = new WP_Query([\n        'post_type' =&gt; 'page',\n        'posts_per_page' =&gt; -1\n    ]);\n    $choices = [];\n    while ($posts-&gt;have_posts()) { \n        $posts-&gt;the_post();\n        $choices[get_the_ID()] = get_the_title();\n    }\n    wp_reset_query();\n    $field['choices'] = $choices;\n    return $field;\n});<\/code><\/pre>\n<p>El ejemplo de c\u00f3digo anterior hace una consulta de publicaci\u00f3n que busca todas las p\u00e1ginas y completa la matriz de elecci\u00f3n con ID de publicaci\u00f3n como claves y t\u00edtulos de publicaci\u00f3n como valores. Esto es solo como un ejemplo; si va a elegir publicaciones, ACF ofrece otros tipos de campos espec\u00edficamente para esto.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Con PHP, es realmente f\u00e1cil completar din\u00e1micamente cualquier tipo de valor o elecci\u00f3n de campo de Campos personalizados avanzados (ACF). En este post veremos c\u00f3mo.<\/p>\n","protected":false},"author":1,"featured_media":224889,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[892,892,716,716,831,914,1110,914,831,840,840,861,861],"tags":[1172],"class_list":["post-233443","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-guia-para-principiantes","category-otro","category-n-a","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233443","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=233443"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233443\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/224889"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=233443"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=233443"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=233443"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}