{"id":233690,"date":"2023-02-21T13:39:00","date_gmt":"2023-02-21T10:39:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233690"},"modified":"2022-11-11T08:52:57","modified_gmt":"2022-11-11T05:52:57","slug":"tutorial-de-temas-de-wordpress-para-principiantes-parte-7-configuracion-del-tema-e-imagenes-destacadas","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/tutorial-de-temas-de-wordpress-para-principiantes-parte-7-configuracion-del-tema-e-imagenes-destacadas\/","title":{"rendered":"Tutorial de temas de WordPress para principiantes \u2013 Parte 7: Configuraci\u00f3n del tema e im\u00e1genes destacadas"},"content":{"rendered":"\n<p>Esta lecci\u00f3n del tutorial del tema de WordPress para principiantes contin\u00faa agregando el c\u00f3digo b\u00e1sico requerido para la configuraci\u00f3n del tema. Aprendemos a agregar soportes de temas y, como resultado, se activa la funcionalidad de imagen destacada de WordPress. En esta lecci\u00f3n tambi\u00e9n corregiremos el t\u00edtulo de la portada aplicando nuestro primer filtro.<\/p>\n<p>Trabajaremos principalmente en <code>functions.php<\/code>el archivo que agregamos en la <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-6-a-themes-functions-file\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">lecci\u00f3n anterior<\/a>. Al final, agregaremos c\u00f3digo para generar im\u00e1genes destacadas dentro de nuestras plantillas.<\/p>\n<h2>Configuraci\u00f3n del tema<\/h2>\n<p>Todos los temas necesitan alg\u00fan c\u00f3digo para configurarlo dici\u00e9ndole a WordPress que active ciertas funciones. Esto incluye la activaci\u00f3n de men\u00fas, widgets, traducci\u00f3n, etc. Esto se hace com\u00fanmente en una &quot;funci\u00f3n de configuraci\u00f3n de tema&quot;, generalmente enganchada a un gancho convenientemente llamado <code>after_setup_theme<\/code>. Para algunas cosas espec\u00edficas, necesitamos usar el gancho de inicializaci\u00f3n de WordPress llamado <code>init<\/code>.<\/p>\n<h3>Escribiendo el c\u00f3digo de configuraci\u00f3n del tema necesario para<code>after_setup_theme<\/code><\/h3>\n<p>Configuremos una &quot;funci\u00f3n de tema de configuraci\u00f3n&quot; de este tipo en nuestro <code>functions.php<\/code>, conectado a <code>after_setup_theme<\/code>:<\/p>\n<pre><code>add_action('after_setup_theme', 'wptutorial_setup_theme');\nfunction wptutorial_setup_theme() {\n\u00a0\n}<\/code><\/pre>\n<p>Dentro de esta funci\u00f3n, agregaremos un mont\u00f3n de funciones de configuraci\u00f3n comunes y \u00fatiles para los temas de WordPress. Coloque todas las siguientes piezas de c\u00f3digo dentro de su funci\u00f3n de configuraci\u00f3n.<\/p>\n<p>Primero, debemos definir un ancho m\u00e1ximo de im\u00e1genes e incrustaciones (como videos). Esto asegura que cuando los autores inserten im\u00e1genes grandes en las publicaciones, las im\u00e1genes se mantengan dentro de un cierto ancho. Lo configur\u00e9 en 840 p\u00edxeles (porque quiero espacio para la barra lateral), pero puedes ajustarlo a tu gusto.<\/p>\n<pre><code>$GLOBALS['content_width'] = 840;<\/code><\/pre>\n<p>Tambi\u00e9n debemos informar a WordPress que el tema es traducible y d\u00f3nde puede buscar archivos de traducci\u00f3n. Voy a entrar en detalle en la traducci\u00f3n del tema de WordPress en <a href=\"http:\/\/awhitepixel.com\/blog\/wordpress-theme-tutorial-for-beginners-part-8-translation-of-your-theme\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">el siguiente paso<\/a> de esta serie de tutoriales de temas.<\/p>\n<pre><code>load_theme_textdomain('wptutorial', get_stylesheet_directory(). '\/lang');<\/code><\/pre>\n<p>Tenga en cuenta el uso de una nueva funci\u00f3n para obtener su directorio de temas, <code>get_stylesheet_directory()<\/code>. Esto es muy similar a <code>get_stylesheet_directory_uri()<\/code>lo que encontramos en el \u00faltimo paso, pero aqu\u00ed necesitamos la ruta relativa, no la URL.<\/p>\n<p>Luego, debemos agregar algunos &quot;soportes de temas&quot;, que activan la funcionalidad de WordPress que no est\u00e1 activada de forma predeterminada.<\/p>\n<pre><code>add_theme_support('automatic-feed-links');\nadd_theme_support('post-thumbnails');\nadd_theme_support('html5', [\n    'search-form',\n    'comment-form',\n    'comment-list',\n    'gallery',\n    'caption',\n]);\nadd_theme_support('custom-logo', [\n    'height'      =&gt; 100,\n    'width'       =&gt; 300,\n    'flex-width'  =&gt; true,\n    'flex-height' =&gt; false,\n]);\nadd_theme_support('customize-selective-refresh-widgets');<\/code><\/pre>\n<p>\u00a1Eso fue un mont\u00f3n de <code>add_theme_support<\/code>llamadas! Como su nombre lo indica, <code>add_theme_support<\/code>le dice a WordPress que active funciones que no est\u00e1n activadas de forma predeterminada. Por ejemplo, im\u00e1genes destacadas (&quot;post-thumbnails&quot;), soporte para etiquetas HTML5 y la funci\u00f3n de logotipo personalizado de WordPress en el Personalizador (\u00a1ajuste la imagen del logotipo deseada si lo desea!).<\/p>\n<p>Hay muchas m\u00e1s funciones interesantes, por lo que le animo a leer la <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_theme_support\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentaci\u00f3n de add_theme_support<\/a>. Por ejemplo, hay uno bastante nuevo <code>title-tag<\/code>, que maneja la etiqueta del t\u00edtulo. Lo omit\u00ed en este tutorial porque ya agregamos la etiqueta de t\u00edtulo <code>header.php<\/code>manualmente.<\/p>\n<p>Tenga en cuenta que si agrega soporte para <code>title-tag<\/code>, debe eliminar la etiqueta de t\u00edtulo de su archivo de encabezado para evitar que se dupliquen las etiquetas de t\u00edtulo.<\/p>\n<p>Finalmente agregamos algunos <code>add_theme_support<\/code>para el nuevo Gutenberg en WordPress. Agregaremos soporte para secciones anchas, activando la funcionalidad de estilos de bloque y soporte para incrustaciones receptivas:<\/p>\n<pre><code>add_theme_support('wp-block-styles');\nadd_theme_support('align-wide');\nadd_theme_support('responsive-embeds');<\/code><\/pre>\n<h3>El resultado final<\/h3>\n<p>Aqu\u00ed est\u00e1 la funci\u00f3n de configuraci\u00f3n final en nuestro <code>functions.php<\/code>:<\/p>\n<pre><code>add_action('after_setup_theme', 'wptutorial_setup_theme');\nfunction wptutorial_setup_theme() {\n    $GLOBALS['content_width'] = 840;\n    \/\/ Make your theme ready for translation\n    load_theme_textdomain('wptutorial', get_stylesheet_directory(). '\/lang');\n    \/\/ Add theme support for WordPress functionality\n    add_theme_support('automatic-feed-links');\n    add_theme_support('title-tag');\n    add_theme_support('post-thumbnails');\n    add_theme_support('html5', [\n        'search-form',\n        'comment-form',\n        'comment-list',\n        'gallery',\n        'caption',\n    ]);\n    add_theme_support('custom-logo', [\n        'height'      =&gt; 100,\n        'width'       =&gt; 300,\n        'flex-width'  =&gt; true,\n        'flex-height' =&gt; false,\n    ]);\n    add_theme_support('customize-selective-refresh-widgets');\n    \/\/ Add theme support for Gutenberg specific functionality\n    add_theme_support('wp-block-styles');\n    add_theme_support('align-wide');\n    add_theme_support('responsive-embeds');\n}<\/code><\/pre>\n<p>\u00a1Despu\u00e9s de guardar, ahora deber\u00eda poder agregar im\u00e1genes destacadas a las publicaciones en el administrador! Agreguemos una correcci\u00f3n de tema m\u00e1s en nuestro <code>functions.php<\/code>antes de agregar im\u00e1genes destacadas a nuestras plantillas; \u00bf Recuerdas que <code>wp_title<\/code>por <code>header.php<\/code>defecto no podemos hacer eco de nada en la p\u00e1gina principal? Arreglemos eso.<\/p>\n<h2>Agregar un filtro a<code>wp_title<\/code><\/h2>\n<p>Agreguemos nuestra primera funci\u00f3n de modificaci\u00f3n de filtro adecuada, usando <code>add_filter()<\/code>. El filtro al que nos conectaremos tiene el mismo nombre que la funci\u00f3n que usamos para WordPress para obtener din\u00e1micamente el t\u00edtulo de la p\u00e1gina; <code>wp_title<\/code>. Lo que arreglaremos es asegurarnos de que el t\u00edtulo no est\u00e9 vac\u00edo en la p\u00e1gina principal, que es el predeterminado en WordPress. Cuando est\u00e9 en la p\u00e1gina principal, queremos que se complete con el nombre del sitio de WordPress.<\/p>\n<p>\u00a1 Recuerde <strong>devolver siempre<\/strong> la variable filtrada en sus funciones de filtro! Todos los filtros modifican una variable, y si no devuelve nada, la variable queda indefinida. Esto puede causar muchos problemas. Para obtener m\u00e1s informaci\u00f3n sobre los filtros, echa un vistazo a mi <a href=\"http:\/\/awhitepixel.com\/blog\/all-about-hooks-in-wordpress\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">publicaci\u00f3n que explica todo sobre los ganchos y los filtros<\/a>.<\/p>\n<h3>Saber cu\u00e1ndo personalizar el t\u00edtulo<\/h3>\n<p>Solo queremos personalizar la variable de t\u00edtulo si estamos en la p\u00e1gina principal. Para todas las dem\u00e1s p\u00e1ginas, queremos dejarlo solo (simplemente devu\u00e9lvalo tal como est\u00e1). Pero, \u00bfc\u00f3mo sabemos cu\u00e1ndo estamos en la primera plana?<\/p>\n<p>Podemos aprovechar <a href=\"https:\/\/codex.wordpress.org\/Conditional_Tags\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">las etiquetas condicionales de WordPress<\/a>, que son un mont\u00f3n de funciones \u00fatiles que devuelven verdadero o falso en funci\u00f3n de una condici\u00f3n. Estos se usan m\u00e1s com\u00fanmente para preguntar si estamos en una determinada p\u00e1gina o plantilla. Simplemente podemos preguntar &quot;\u00bfEstamos en la portada?&quot;. Si este m\u00e9todo devuelve verdadero, solo entonces modificaremos la variable de t\u00edtulo.<\/p>\n<p>Vale la pena se\u00f1alar que hay dos etiquetas condicionales para la p\u00e1gina principal, a saber, <code>is_home()<\/code>y <code>is_front_page().<\/code>Estas difieren seg\u00fan su configuraci\u00f3n de &quot;Lectura&quot;, ya sea que su p\u00e1gina principal muestre o no las \u00faltimas publicaciones o est\u00e9 configurada en una p\u00e1gina fija. Si sigue este tutorial con una nueva instalaci\u00f3n de WordPress con la configuraci\u00f3n predeterminada, utiliza <code>is_front_page()<\/code>.<\/p>\n<h3>Obtener el nombre del sitio de WordPress<\/h3>\n<p>Ahora sabemos qu\u00e9 filtro usar y c\u00f3mo asegurarnos de que solo cambiamos el t\u00edtulo si estamos en el lugar correcto. Pero, \u00bfcu\u00e1l deber\u00eda ser el t\u00edtulo? Por lo general, el t\u00edtulo de la p\u00e1gina principal ser\u00eda el nombre de su sitio de WordPress. Pero, \u00bfc\u00f3mo obtenemos esa informaci\u00f3n?<\/p>\n<p>Para recuperar informaci\u00f3n sobre la instalaci\u00f3n actual de WordPress usamos la <code>bloginfo()<\/code>funci\u00f3n. Como par\u00e1metro, solicitamos devolver el nombre del sitio, lo que se hace configurando el par\u00e1metro en &#8216; <code>name<\/code>&#8216;. Y debido a que este es un filtro y necesitamos devolverlo, no repetirlo, usamos su m\u00e9todo hermano <code>get_bloginfo()<\/code>. La llamada <code>bloginfo()<\/code>siempre generar\u00e1 un eco de salida.<\/p>\n<pre><code>add_filter('wp_title', 'wptutorial_title_filter');\nfunction wptutorial_title_filter($title) {\n    if (is_front_page()) {\n        return get_bloginfo('name');\n    }\n    return $title;\n}<\/code><\/pre>\n<p>Si actualiza su p\u00e1gina principal, \u00a1deber\u00eda ver que el nombre de su sitio aparece en la <code>&lt;title&gt;<\/code>etiqueta (y en la pesta\u00f1a del navegador)! Nuestro filtro afecta solo a la p\u00e1gina principal, por lo que cualquier otra p\u00e1gina, como una publicaci\u00f3n \u00fanica, deber\u00eda devolver lo mismo que antes; el t\u00edtulo de la publicaci\u00f3n.<\/p>\n<h2>Salida de im\u00e1genes destacadas en archivos de plantilla<\/h2>\n<p>Anteriormente, cuando configuramos los soportes de temas, agregamos soporte para im\u00e1genes destacadas. Con esto activado, ahora podemos generar estas im\u00e1genes en nuestras plantillas. \u00a1Hag\u00e1moslo ahora!<\/p>\n<p>\u00c1brete <code>index.php<\/code>y encuentra un lugar para ellos dentro del bucle. Eleg\u00ed colocarlo despu\u00e9s del t\u00edtulo, pero t\u00fa decides d\u00f3nde los quieres. Utiliza la funci\u00f3n <code>the_post_thumbnail()<\/code>para generar la imagen. Se recomienda verificar primero si la publicaci\u00f3n incluso tiene una imagen destacada, lo cual hacemos usando <code>has_post_thumbnail()<\/code>.<\/p>\n<pre><code>...\n    &lt;h2&gt;&lt;a href=\"&lt;?php the_permalink(); ?&gt;\" title=\"&lt;?php the_title(); ?&gt;\"&gt;&lt;?php the_title(); ?&gt;&lt;\/a&gt;&lt;\/h2&gt;\n    &lt;?php if (has_post_thumbnail()) {\n        the_post_thumbnail();\n    } ?&gt;\n    &lt;?php the_excerpt(); ?&gt;\n...<\/code><\/pre>\n<p>Si su publicaci\u00f3n no tiene una imagen destacada, no ver\u00e1 nada despu\u00e9s del t\u00edtulo. Sin embargo, si configura una imagen destacada en una de sus publicaciones, <code>the_post_thumbnail()<\/code>generar\u00e1 una <code>&lt;img&gt;<\/code>etiqueta con la imagen elegida. Esta funci\u00f3n acepta algunos par\u00e1metros adicionales. Por ejemplo, puede definir qu\u00e9 tama\u00f1o de imagen desea usar y controlar los atributos agregados a la imagen. Como de costumbre, le animo a que eche un vistazo r\u00e1pido a la <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/the_post_thumbnail\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">documentaci\u00f3n<\/a> y la ajuste a su gusto.<\/p>\n<h2>Documentaci\u00f3n sobre los m\u00e9todos utilizados<\/h2>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_action\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">a\u00f1adir_acci\u00f3n<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/load_theme_textdomain\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">cargar_tema_textodominio<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/get_stylesheet_directory\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_stylesheet_directory<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_theme_support\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">add_theme_support<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/add_filter\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">A\u00f1adir filtro<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/is_front_page\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">es_primer_pagina<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/get_bloginfo\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">get_bloginfo<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/has_post_thumbnail\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">has_post_miniatura<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/the_post_thumbnail\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">la_post_miniatura<\/a><\/li>\n<\/ul>\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>Esta lecci\u00f3n contin\u00faa agregando el c\u00f3digo b\u00e1sico requerido para configurar un tema de WordPress. Aprendemos a agregar soportes de temas y filtrar el t\u00edtulo de la portada.<\/p>\n","protected":false},"author":1,"featured_media":224083,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[924,892,892,716,716,831,1110,800,800,831,924,840,840,861,861],"tags":[1172],"class_list":["post-233690","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-asignaturas","category-codigo","category-desarrollador","category-guia-para-principiantes","category-n-a","category-php-2","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233690","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=233690"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/233690\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/224083"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=233690"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=233690"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=233690"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}