{"id":233629,"date":"2023-02-19T13:59:00","date_gmt":"2023-02-19T10:59:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233629"},"modified":"2022-11-11T00:43:49","modified_gmt":"2022-11-10T21:43:49","slug":"cree-pestanas-de-productos-woocommerce-personalizadas-con-campos-personalizados-avanzados","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/cree-pestanas-de-productos-woocommerce-personalizadas-con-campos-personalizados-avanzados\/","title":{"rendered":"Cree pesta\u00f1as de productos WooCommerce personalizadas con campos personalizados avanzados"},"content":{"rendered":"\n<p>Al ver un producto en <a href=\"https:\/\/woocommerce.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WooCommerce<\/a>, la informaci\u00f3n sobre el producto se muestra en pesta\u00f1as. Estas pesta\u00f1as son fijas y generadas por WooCommerce, fuera de su control. Esta publicaci\u00f3n le mostrar\u00e1 c\u00f3mo agregar c\u00f3digo que permita a los autores agregar pesta\u00f1as personalizadas con contenido personalizado a los productos.<\/p>\n<p>Descargo de responsabilidad: hay una extensi\u00f3n de WooCommerce llamada <a href=\"https:\/\/woocommerce.com\/products\/woocommerce-tab-manager\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">WooCommerce Tab Manager<\/a> que proporciona esta funci\u00f3n. Sin embargo, no es gratis. No lo he probado yo mismo, pero por lo que puedo ver, solo admite un editor WYSIWYG (lo que ves es lo que obtienes) para el contenido de las pesta\u00f1as. Esta publicaci\u00f3n es para usted que desea ajustar m\u00e1s el contenido de la pesta\u00f1a o desea escribir el c\u00f3digo usted mismo sin pagar por otro complemento.<\/p>\n<p>Usaremos el complemento <a href=\"https:\/\/www.advancedcustomfields.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Advanced Custom Fields<\/a> (ACF) para simplificar el proceso. Pero deber\u00eda poder reemplazar f\u00e1cilmente la parte de ACF con su propio c\u00f3digo personalizado si no desea usar el complemento. ACF viene en una <a href=\"https:\/\/wordpress.org\/plugins\/advanced-custom-fields\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">versi\u00f3n gratuita<\/a> y una <a href=\"https:\/\/www.advancedcustomfields.com\/pro\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">versi\u00f3n Pro<\/a>. En ACF Pro hay un tipo de campo ingenioso: el repetidor, que es perfecto para este tipo de uso. Sin embargo, si no tiene o no desea comprar una licencia Pro, no se preocupe. El tutorial de c\u00f3digo a continuaci\u00f3n le mostrar\u00e1 c\u00f3mo agregar campos usando la versi\u00f3n gratuita y usando el repetidor en la versi\u00f3n Pro.<\/p>\n<p>Si a\u00fan no est\u00e1 familiarizado con ACF, ACF nos ayuda a configurar f\u00e1cilmente los metacampos de publicaci\u00f3n, de todo tipo. Puede agregar f\u00e1cilmente un editor, un selector de archivos, un selector de fecha o color, un selector de publicaci\u00f3n o categor\u00eda con soporte para m\u00faltiples opciones y reordenaci\u00f3n, y m\u00e1s. Podemos lograr lo mismo sin ACF, pero luego tendr\u00edamos que codificar la visualizaci\u00f3n y el guardado del contenido de metaboxes nosotros mismos.<\/p>\n<h2>que haremos<\/h2>\n<p>En pocas palabras, queremos permitir agregar pesta\u00f1as personalizadas a la vista del producto. Cada pesta\u00f1a admite un t\u00edtulo que se muestra como etiqueta de pesta\u00f1a y el contenido que se muestra al hacer clic en la pesta\u00f1a. Las pesta\u00f1as personalizadas realmente dependen del tipo de proyecto o necesidades que tengas; tal vez necesite pesta\u00f1as para especificaciones t\u00e9cnicas, una pesta\u00f1a con archivos (por ejemplo, manuales de usuario y dem\u00e1s), informaci\u00f3n adicional o una consulta personalizada que muestre productos relacionados.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152607-61e4e196664e9.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-152607-61e4e196664e9.png\" alt=\"Cree pesta\u00f1as de productos WooCommerce personalizadas con campos personalizados avanzados\" ><\/a><\/p>\n<p>En este tutorial lo simplificaremos agregando un editor WYSIWYG para el contenido de las pesta\u00f1as. Como se mencion\u00f3 anteriormente, es f\u00e1cil implementar otros tipos de campos (por ejemplo, archivos o una consulta posterior), es solo una diferencia en el c\u00f3digo que escribe para mostrar el contenido de la pesta\u00f1a, que no est\u00e1 relacionado con este tutorial.<\/p>\n<p>Si tiene ACF Pro y quiere usar el repetidor para agregar f\u00e1cilmente varias pesta\u00f1as; omita la siguiente secci\u00f3n. Si solo tiene la versi\u00f3n gratuita de ACF, contin\u00fae. La desventaja de no tener el campo repetidor es que necesitas definir un n\u00famero fijo de pesta\u00f1as. Por lo tanto, el autor no puede hacer un n\u00famero ilimitado de pesta\u00f1as como puede hacerlo con el repetidor. Pero esta soluci\u00f3n gratuita funcionar\u00e1 bien en las tiendas web donde solo desea pesta\u00f1as personalizadas espec\u00edficas (cantidad de).<\/p>\n<h2>Tutorial para la versi\u00f3n gratuita de ACF<\/h2>\n<h3>Agregar los campos ACF<\/h3>\n<p>Agregar un nuevo metabox con campos es muy f\u00e1cil con ACF. Tienes dos opciones; use la interfaz de usuario de ACF para configurar todo o agregue los campos por c\u00f3digo. Por lo general, configurar los campos en admin es el camino a seguir. Pero si necesita asegurarse de que los campos existen en varios sitios de WordPress (por ejemplo, desarrollo de host local, servidor de prueba y servidor en vivo), puede beneficiarse al agregar los campos por c\u00f3digo en su tema o complemento.<\/p>\n<p>Necesitas configurar lo siguiente:<\/p>\n<ul>\n<li>Un grupo que se muestra cuando el tipo de publicaci\u00f3n es igual a los productos de WooCommerce<\/li>\n<li>Una entrada de texto para el t\u00edtulo de la pesta\u00f1a<\/li>\n<li>Cualquier campo que desee para el contenido de la pesta\u00f1a. Como ejemplo, agregaremos un editor WYSIWYG.<\/li>\n<li>(Opcional) T\u00edtulos de pesta\u00f1as adicionales y contenido de pesta\u00f1as para tantas pesta\u00f1as que queramos admitir.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152607-61e4e197a93a6.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-152607-61e4e197a93a6.png\" alt=\"Cree pesta\u00f1as de productos WooCommerce personalizadas con campos personalizados avanzados\" ><\/a><\/p>\n<p>Tome nota para recordar los nombres de los campos, ya que deber\u00e1 consultarlos m\u00e1s adelante. He definido el t\u00edtulo de la pesta\u00f1a como <code>tab_title<\/code>y el campo WYSIWYG como <code>tab_contents<\/code>.<\/p>\n<p>Si prefiere agregar los campos por c\u00f3digo, aqu\u00ed hay un ejemplo. Agregue esto en su tema <code>functions.php<\/code>o archivo de complemento:<\/p>\n<pre><code>if (class_exists('acf')) {\n    add_action('acf\/init', function() {\n        $fields = [\n            [\n                'key' =&gt; 'field_tab_title',\n                'label' =&gt; __('Custom tab title', 'txtdomain'),\n                'name' =&gt; 'tab_title',\n                'type' =&gt; 'text',\n            ],\n            [\n                'key' =&gt; 'field_tab_contents',\n                'label' =&gt; __('Custom tab content', 'txtdomain'),\n                'name' =&gt; 'tab_contents',\n                'type' =&gt; 'wysiwyg',\n                'tabs' =&gt; 'all',\n                'toolbar' =&gt; 'full',\n                'media_upload' =&gt; 1,\n                'delay' =&gt; 0,\n            ],\n        ];\n\u00a0\n        acf_add_local_field_group([\n            'key' =&gt; 'group_custom_woocommerce_tabs',\n            'title' =&gt; __('Custom Tabs', 'txtdomain'),\n            'fields' =&gt; $fields,\n            'label_placement' =&gt; 'top',\n            'menu_order' =&gt; 0,\n            'style' =&gt; 'default',\n            'position' =&gt; 'normal',\n            'location' =&gt; [\n                [\n                    [\n                        'param' =&gt; 'post_type',\n                        'operator' =&gt; '==',\n                        'value' =&gt; 'product'\n                    ]\n                ]\n            ],\n        ]);\n    });\n}<\/code><\/pre>\n<p>Si desea m\u00e1s de una pesta\u00f1a, simplemente agregue otro conjunto de t\u00edtulo de pesta\u00f1a y contenido de pesta\u00f1a despu\u00e9s de <code>line #19<\/code>. Solo recuerda mantenerte <code>name<\/code>\u00fanico.<\/p>\n<p>Cuando editamos un producto deber\u00edamos ver aparecer este metabox:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152607-61e4e198aac0f.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-152607-61e4e198aac0f.png\" alt=\"Cree pesta\u00f1as de productos WooCommerce personalizadas con campos personalizados avanzados\" ><\/a><\/p>\n<h3>Salida de sus pesta\u00f1as personalizadas<\/h3>\n<p>WooCommerce nos permite filtrar <code>woocommerce_product_tabs<\/code>para manipular pesta\u00f1as. Como argumento para este filtro, obtiene una matriz para todas las pesta\u00f1as. La matriz consta de matrices para cada pesta\u00f1a con claves \u00fanicas. Pero la matriz de cada pesta\u00f1a no contiene la salida real del contenido de la pesta\u00f1a. En su lugar, espera una devoluci\u00f3n de llamada: un nombre de una funci\u00f3n que WooCommerce ejecutar\u00e1 para generar el contenido de la pesta\u00f1a.<\/p>\n<p>Una vez dentro de la funci\u00f3n, puede usar <code>global $post<\/code>para obtener acceso al objeto de publicaci\u00f3n actual, o si desea que WooCommerce genere el objeto de producto, simplemente haga <code>global $product<\/code>. Necesitamos el ID de la publicaci\u00f3n para obtener el valor de nuestros campos personalizados con la funci\u00f3n de ACF <code>[get_field](https:\/\/www.advancedcustomfields.com\/resources\/get_field\/)()<\/code>. En el ejemplo de c\u00f3digo a continuaci\u00f3n, solo buscamos el t\u00edtulo de la pesta\u00f1a y verificamos si est\u00e1 vac\u00edo o no. Si no es as\u00ed, agrega una nueva pesta\u00f1a a la matriz. Tiene sentido no agregar pesta\u00f1as donde el t\u00edtulo de la pesta\u00f1a est\u00e1 vac\u00edo.<\/p>\n<pre><code>if (class_exists('acf') &amp;&amp; class_exists('WooCommerce')) {\n    add_filter('woocommerce_product_tabs', function($tabs) {\n        global $post, $product;  \/\/ Access to the current product or post\n        $custom_tab_title = get_field('tab_title', $post-&gt;ID);\n\u00a0\n        if (!empty($custom_tab_title)) {\n            $tabs['awp-'. sanitize_title($custom_tab_title)] = [\n                'title' =&gt; $custom_tab_title,\n                'callback' =&gt; 'awp_custom_woocommerce_tabs',\n                'priority' =&gt; 10\n            ];\n        }\n        return $tabs;\n    });\n\u00a0\n    function awp_custom_woocommerce_tabs($key, $tab) {\n        global $post;\n\u00a0\n        ?&gt;&lt;h2&gt;&lt;?php echo $tab['title']; ?&gt;&lt;\/h2&gt;&lt;?php\n\u00a0\n        $custom_tab_contents = get_field('tab_contents', $post-&gt;ID);\n        echo $custom_tab_contents;\n    }\n}<\/code><\/pre>\n<p>Tenga en cuenta que puede usar &#8216; <code>priority<\/code>&#8216; para controlar la posici\u00f3n de la pesta\u00f1a. Por ejemplo, establecerlo en 1 har\u00e1 que su pesta\u00f1a aparezca primero, antes de todas las pesta\u00f1as de WooCommerce. Defina un nombre de funci\u00f3n para el <code>callback<\/code>elemento &#8216; &#8216;. En l\u00ednea <code>#17<\/code>, definimos la funci\u00f3n que ejecutar\u00e1 WooCommerce para generar el contenido de la pesta\u00f1a.<\/p>\n<p>Estas funciones de devoluci\u00f3n de llamada de pesta\u00f1as obtendr\u00e1n dos par\u00e1metros; la clave y el elemento de matriz de todos los valores para la pesta\u00f1a actual. Dentro de nuestra funci\u00f3n de devoluci\u00f3n de llamada, volvemos a mostrar el t\u00edtulo de la pesta\u00f1a, haciendo referencia a la <code>$tab<\/code>matriz proporcionada. WooCommerce hace eco de los t\u00edtulos de sus pesta\u00f1as dentro de un <code>h2<\/code>, as\u00ed que hacemos lo mismo. Y luego usamos <code>get_field()<\/code>para obtener el valor del contenido de la pesta\u00f1a y simplemente hacemos eco del valor. Ajuste la l\u00ednea <code>#23<\/code>para que se ajuste a cualquier tipo de campo que haya agregado (p. ej., selector de objeto de publicaci\u00f3n, im\u00e1genes o cualquier otra cosa).<\/p>\n<p>Tenga en cuenta que he envuelto todo dentro de un control si que verifica si WooCommerce y ACF est\u00e1n activados o no. Esta es una buena pr\u00e1ctica para evitar que su sitio se rompa.<\/p>\n<p>\u00a1Y <strong>eso es todo<\/strong>! \u00a1Ahora ha creado con \u00e9xito el c\u00f3digo para agregar pesta\u00f1as personalizadas de WooCommerce!<\/p>\n<p>Si desea hacer esto con el campo repetidor de ACF Pro para admitir un n\u00famero ilimitado de pesta\u00f1as, siga leyendo.<\/p>\n<h2>Tutorial para ACF Pro y repetidor<\/h2>\n<h3>Agregar los campos ACF<\/h3>\n<p>Agregue su grupo utilizando la interfaz de usuario de administraci\u00f3n de ACF o agreg\u00e1ndolos por c\u00f3digo en su tema o archivos de complemento. Necesitamos configurar lo siguiente:<\/p>\n<ul>\n<li>Un grupo que se muestra cuando el tipo de publicaci\u00f3n es igual a un producto de WooCommerce<\/li>\n<li>Un repetidor con los siguientes subcampos:\n<ul>\n<li>Una entrada de texto para el t\u00edtulo de la pesta\u00f1a<\/li>\n<li>Cualquier campo que desee para el contenido de la pesta\u00f1a.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>As\u00ed es como lo configurar\u00eda usando el administrador de ACF:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152607-61e4e19a1ed6d.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-152607-61e4e19a1ed6d.png\" alt=\"Cree pesta\u00f1as de productos WooCommerce personalizadas con campos personalizados avanzados\" ><\/a><\/p>\n<p>O puede agregar el grupo por c\u00f3digo as\u00ed:<\/p>\n<pre><code>if (class_exists('acf')) {\n    add_action('acf\/init', function() {\n        $fields = [\n            [\n                'key' =&gt; 'field_custom_tabs_repeater',\n                'label' =&gt; __('Custom tabs', 'txtdomain'),\n                'name' =&gt; 'custom_tabs_repeater',\n                'type' =&gt; 'repeater',\n                'layout' =&gt; 'row',\n                'button_label' =&gt; __('Add new tab', 'txtdomain'),\n                'sub_fields' =&gt; [\n                    [\n                        'key' =&gt; 'field_tab_title',\n                        'label' =&gt; __('Tab title', 'txtdomain'),\n                        'name' =&gt; 'tab_title',\n                        'type' =&gt; 'text',\n                    ],\n                    [\n                        'key' =&gt; 'field_tab_contents',\n                        'label' =&gt; __('Tab content', 'txtdomain'),\n                        'name' =&gt; 'tab_contents',\n                        'type' =&gt; 'wysiwyg',\n                        'tabs' =&gt; 'all',\n                        'toolbar' =&gt; 'full',\n                        'media_upload' =&gt; 1,\n                        'delay' =&gt; 0,\n                    ],\n                ],\n            ],\n        ];\n\u00a0\n        acf_add_local_field_group([\n            'key' =&gt; 'group_custom_woocommerce_tabs',\n            'title' =&gt; __('Custom Tabs', 'txtdomain'),\n            'fields' =&gt; $fields,\n            'label_placement' =&gt; 'top',\n            'menu_order' =&gt; 0,\n            'style' =&gt; 'default',\n            'position' =&gt; 'normal',\n            'location' =&gt; [\n                [\n                    [\n                        'param' =&gt; 'post_type',\n                        'operator' =&gt; '==',\n                        'value' =&gt; 'product'\n                    ]\n                ]\n            ],\n        ]);\n    });\n}<\/code><\/pre>\n<p>De cualquier manera, deber\u00edas terminar con este metabox al editar productos:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152607-61e4e19e02c1d.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-152607-61e4e19e02c1d.png\" alt=\"Cree pesta\u00f1as de productos WooCommerce personalizadas con campos personalizados avanzados\" ><\/a><\/p>\n<h3>Salida de sus pesta\u00f1as personalizadas<\/h3>\n<p>La salida de sus pesta\u00f1as personalizadas es muy similar a lo que hicimos anteriormente para la versi\u00f3n gratuita. Filtramos <code>woocommerce_product_tabs<\/code>, pero aqu\u00ed recorremos cada elemento repetido del repetidor. Necesitamos una forma de identificar cada elemento en el repetidor con claves, por lo que generamos una clave nosotros mismos usando la posici\u00f3n del bucle y una versi\u00f3n slug del t\u00edtulo de la pesta\u00f1a. En la funci\u00f3n de devoluci\u00f3n de llamada, extraemos la posici\u00f3n del bucle de la tecla y la usamos para referirnos a la matriz de nuestro repetidor.<\/p>\n<pre><code>if (class_exists('acf') &amp;&amp; class_exists('WooCommerce')) {\n    add_filter('woocommerce_product_tabs', function($tabs) {\n        global $post, $product;  \/\/ Access to the current product or post\n        $custom_tabs_repeater = get_field('custom_tabs_repeater', $post-&gt;ID);\n\u00a0\n        if (!empty($custom_tabs_repeater)) {\n            $counter = 0;\n            $start_at_priority = 10;\n            foreach ($custom_tabs_repeater as $custom_tab) {\n                $tab_id = $counter. '_'. sanitize_title($custom_tab['tab_title']);\n                $tabs[$tab_id] = [\n                    'title' =&gt; $custom_tab['tab_title'],\n                    'callback' =&gt; 'awp_custom_woocommerce_tabs',\n                    'priority' =&gt; $start_at_priority++\n                ];\n                $counter++;\n            }\n        }\n        return $tabs;\n    });\n\u00a0\n    function awp_custom_woocommerce_tabs($key, $tab) {\n        global $post;\n\u00a0\n        ?&gt;&lt;h2&gt;&lt;?php echo $tab['title']; ?&gt;&lt;\/h2&gt;&lt;?php\n\u00a0\n        $custom_tabs_repeater = get_field('custom_tabs_repeater', $post-&gt;ID);\n        $tab_id = explode('_', $key);\n        $tab_id = $tab_id[0];\n\u00a0\n        echo $custom_tabs_repeater[$tab_id]['tab_contents'];\n    }\n}<\/code><\/pre>\n<p>Dentro de nuestra funci\u00f3n de filtro buscamos el valor del repetidor y verificamos si no est\u00e1 vac\u00edo. Luego definimos una variable de contador, comenzando en 0 (las matrices siempre comienzan en la posici\u00f3n 0), que incrementamos con 1 para cada elemento dentro del ciclo (en la l\u00ednea <code>#18<\/code>). En el bucle de cada elemento repetidor, los asignamos a todos a la misma funci\u00f3n de devoluci\u00f3n de llamada. Usamos la funci\u00f3n de WordPress <code>[sanitize_title](https:\/\/developer.wordpress.org\/reference\/functions\/sanitize_title\/)()<\/code>para convertir el t\u00edtulo de la pesta\u00f1a en una versi\u00f3n de slug y lo agregamos a la clave.<\/p>\n<p>En nuestra funci\u00f3n de devoluci\u00f3n de llamada en la l\u00ednea <code>#31 - 32<\/code>, hacemos algunas manipulaciones simples de cadenas para extraer el valor del contador (que comienza en 0 y se incrementa en 1 para cada elemento). Luego, simplemente usamos esto como \u00edndice para la matriz de repetidores para obtener el campo de contenido de pesta\u00f1a correcto.<\/p>\n<p>\u00a1Y <strong>eso es todo<\/strong>! \u00a1Ahora ha implementado un n\u00famero ilimitado de pesta\u00f1as personalizadas en WooCommerce!<\/p>\n<p>Recuerda que puedes reemplazar WYSIWYG con cualquier tipo de campo. Solo necesita cambiar la forma en que genera el campo en la l\u00ednea <code>#23<\/code>.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Escribir su propio c\u00f3digo para agregar pesta\u00f1as personalizadas de WooCommerce es realmente f\u00e1cil cuando comprende el concepto b\u00e1sico de c\u00f3mo lo hace WooCommerce. Ni siquiera requiere mucho c\u00f3digo. Esta es una soluci\u00f3n perfectamente buena para usted que no quiere o no puede invertir en licencias de extensi\u00f3n o simplemente necesita una soluci\u00f3n simple para su tienda web.<\/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>Un tutorial sobre c\u00f3mo puede agregar pesta\u00f1as personalizadas de WooCommerce a los productos. Vea lo f\u00e1cil que es hacer esto con el complemento Advanced Custom Fields y un poco de c\u00f3digo.<\/p>\n","protected":false},"author":1,"featured_media":224911,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[810,716,716,1110,810,840,840,851,851,861,861],"tags":[1172],"class_list":{"0":"post-233629","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-complementos","8":"category-desarrollador","10":"category-n-a","12":"category-tutoriales","14":"category-woocommerce-2","16":"category-wordpress-2","18":"tag-affiai-es"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233629","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=233629"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233629\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/224911"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=233629"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=233629"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=233629"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}