{"id":12802,"date":"2021-12-27T17:55:12","date_gmt":"2021-12-27T15:55:12","guid":{"rendered":"https:\/\/www.espai.es\/blog\/?p=12802"},"modified":"2021-12-28T12:01:11","modified_gmt":"2021-12-28T10:01:11","slug":"crear-un-tema-de-wordpress-desde-cero-sin-saber-php","status":"publish","type":"post","link":"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/","title":{"rendered":"Crear un tema de WordPress desde cero (sin saber PHP)"},"content":{"rendered":"<h2>Introducci\u00f3n<\/h2>\n<p>Este art\u00edculo es una actualizaci\u00f3n de mis art\u00edculos anteriores sobre este mismo tema, crear un tema para WordPress desde cero y sin saber PHP, que pod\u00e9is encontrar <a href=\"https:\/\/www.espai.es\/blog\/2016\/11\/como-crear-un-tema-wordpress-desde-cero-1\/\">aqu\u00ed<\/a>. Dichos art\u00edculos est\u00e1n explicados m\u00e1s al detalle, en este art\u00edculo de actualizaci\u00f3n, me voy a centrar en otros aspectos para que su lectura os resulte m\u00e1s interesante.<\/p>\n<p>Lo primero que hay que tener en cuenta es que <strong>vamos a crear un tema de WordPress a partir de lo que se conoce como un starter theme<\/strong>, lo que viene a ser<strong> un \u00abtema en blanco\u00bb<\/strong>. Estos temas ya tienen la parte complicada hecha (la programaci\u00f3n en PHP), y aunque tienen sus limitaciones, para la m\u00e1s habitual de nuestras necesidades (crearle un tema personalizado a un cliente), van a servir perfectamente. Si lo que pretendes es crear un tema gen\u00e9rico e intentar venderlo a cientos o miles de clientes, probablemente no sea la opci\u00f3n m\u00e1s adecuada.<\/p>\n<p>En esta ocasi\u00f3n voy a usar el starter theme de <a href=\"https:\/\/underscores.me\/\">underscores.me<\/a><\/p>\n<h2>Crear un tema personalizado a partir del Starter Theme<\/h2>\n<p>El primer paso es entrar en <a href=\"https:\/\/underscores.me\/\">underscores.me<\/a> y \u00abcrear\u00bb\/descargar un tema con el nombre que nos interese. En mi caso se llamar\u00e1 \u00abespai\u00bb.<\/p>\n<p>Hay que tener en cuenta que este tema tiene licencia GNU GPL v2 (o posterior) y por lo tanto nuestro tema obligatoriamente tendr\u00e1 una licencia id\u00e9ntica o similar, pero esto no nos va a impedir venderlo al cliente que le vayamos a hacer el tema personalizado.<\/p>\n<p>Despu\u00e9s debemos de instalar y activar el tema en nuestro WordPress.<\/p>\n<p>Nuestro tema se ha instalado en <strong>wp-content\/themes<\/strong> y la carpeta con el nombre del tema que hemos indicado en underscores.me<\/p>\n<p>Lo primero ser\u00eda, si no lo vamos a usar, borrar el archivo styles-rtl.css ya que es la versi\u00f3n RTL (de derecha a izquierda) para idiomas que lo requieran.<\/p>\n<p>Veremos tambi\u00e9n que el tema tiene una imagen en blanco (screenshot.png) que podemos reemplazar con nuestro logo corporativo o por una captura del tema cuando lo finalicemos.<\/p>\n<p>Despu\u00e9s abriremos el archivo <strong>styles.css<\/strong> con nuestro editor favorito y <strong>al inicio del archivo CSS tenemos un comentario que contiene informaci\u00f3n que WordPress va a usar para mostrar la informaci\u00f3n de nuestro tema.<\/strong> Por lo que deber\u00edamos de cambiar \/ quitar aquellas cosas que consideremos necesarias. Aqu\u00ed os dejo el mio:<\/p>\n<pre>\/*\r\nTheme Name: Escola Espai\r\nTheme URI: http:\/\/www.espai.es\/\r\nAuthor: Abel Camarena Bernab\u00e9u\r\nDescription: Tema de ejemplo de la Escola Espai\r\nVersion: 1.0.0\r\nText Domain: espai\r\n*\/<\/pre>\n<h2>Familiariz\u00e1ndose con el Starter Theme<\/h2>\n<p>Obviamente, <strong>antes de modificar el tema<\/strong>, debemos de analizarlo un poco. Si inspeccionamos el c\u00f3digo HTML generado en nuestro WordPress, veremos lo siguiente:<\/p>\n<ul>\n<li>El tema no es full-width (ni tiene responsive)<\/li>\n<li>La barra lateral no sale al lado, sino que sale abajo.<\/li>\n<li>La estructura es:\n<ul>\n<li>header<\/li>\n<li>main<\/li>\n<li>aside<\/li>\n<li>footer<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Por otra parte, en \u00abApariencia &gt; Editor de temas\u00bb podemos ver mejor la organizaci\u00f3n de los archivos:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>La p\u00e1gina principal es index.php<\/li>\n<li>Una entrada normal es single.php<\/li>\n<li>Una p\u00e1gina normal es page.php<\/li>\n<li>La cabecera est\u00e1 en el archivo header.php<\/li>\n<li>El pie de p\u00e1gina en el archivo footer.php<\/li>\n<li>etc.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Finalmente, en \u00abAparencia &gt; Men\u00fas\u00bb y \u00abAparenciar &gt; Widgets\u00bb podemos ver que este tema solo tiene una zona para widgets (el aside\/sidebar) y una zona para men\u00fa (el men\u00fa principal [primary])<\/p>\n<h2>Funcionamiento b\u00e1sico de PHP<\/h2>\n<p>Como habr\u00e9is empezado a comprender a estas alturas, el tema est\u00e1 formado por fragmentos de p\u00e1gina (header, footer, sidebar&#8230;) en diferentes archivos PHP que se combinan para acabar generando el archivo HTML que sea necesario enviar al visitante de nuestra p\u00e1gina. Por lo que cuando hacemos cambios en uno de estos archivos PHP, debemos de tener en cuenta que puede tener consecuencias en el resto de archivos.<\/p>\n<p>Antes de modificar cualquier archivo PHP, puesto que se supone que no sabemos PHP, es importante sacar copia de dicho archivo por si lo rompemos.<\/p>\n<p><strong>Lo \u00fanico que necesitamos saber s\u00ed o s\u00ed, es que los archivos PHP son una combinaci\u00f3n de c\u00f3digo HTML normal y c\u00f3digo PHP.<\/strong> La clave es que cualquier cosa entre <strong>&lt;?php<\/strong> y <strong>?&gt;<\/strong> es c\u00f3digo PHP que no deber\u00edamos de modificar si no lo comprendemos. <strong>El resto del c\u00f3digo es HTML normal, y por lo tanto, si vamos con cuidado podemos a\u00f1adir, modificar o quitar c\u00f3digo HTML sin problemas, y esto nos va a permitir cambios estructurales.<\/strong><\/p>\n<h2>Modificar la estructura del tema<\/h2>\n<p>Vamos a empezar con un ejemplo sencillo, modificando el archivo <strong>footer.php<\/strong>. En este caso, tenemos un <em><strong>div<\/strong><\/em> de la clase <strong><em>site-info<\/em><\/strong> con \u00abpublicidad\u00bb del starter theme. Ese c\u00f3digo PHP que en principio no entendemos sirve simplemente para generar el contenido que hay dentro de dicho <strong>div<\/strong> del <strong>footer<\/strong>. Como no nos interesa dicho contenido, podemos borrar alegremente todo el contenido del div y poner un texto con nuestro copyright.<\/p>\n<pre>&lt;div class=\"site-info\"&gt;\r\n\u00a0 &lt;p&gt;\r\n\u00a0 \u00a0 Copyright &amp;copy; 2022 Escola Espai\r\n\u00a0 &lt;\/p&gt;\r\n&lt;\/div&gt;&lt;!-- .site-info --&gt;<\/pre>\n<p>De esta forma tan sencilla hemos modificado el <strong>footer<\/strong>. Obviamente, esta modificaci\u00f3n tiene sus pegas, puesto que el texto que hemos introducido no se puede modificar por el usuario desde el backend de WordPress. As\u00ed que <b>la mayor\u00eda de cambios que vamos a realizar afectar\u00e1n a la estructura, a\u00f1adiendo\/eliminando elementos HTML, o bien a\u00f1adiendo\/modificando\/eliminando algunos atributos id o clases para despu\u00e9s darle el aspecto deseado por CSS<\/b>. Hay que <strong>evitar a\u00f1adir contenido de esta forma ya que es algo que solo se podr\u00e1 modificar modificando el tema<\/strong>.<\/p>\n<p>En el siguiente ejemplo, vamos a a\u00f1adir algunos elementos <em><strong>div<\/strong> <\/em>de la clase <strong><em>wrapper<\/em> <\/strong>para darle un ancho m\u00e1ximo al contenido y mostrarlo centrado. Esto, obviamente, no es obligatorio hacerlo y es una decisi\u00f3n \u00abart\u00edstica\u00bb de cara a ajustar la estructura del tema a un c\u00f3digo CSS que a\u00f1adiremos posteriormente, pero nos sirve como ejemplo de c\u00f3mo modificar la estructura.<\/p>\n<p>Lo primero es abrir el archivo <strong>header.php<\/strong> y crear un div de la clase wrapper, que ser\u00e1 el primer hijo del elemento <strong>header<\/strong>, y que tenga dentro el logo y el menu (<strong>nav<\/strong>) del sitio web. La estructura <strong>simplificada<\/strong> deber\u00eda de ser tal que as\u00ed:<\/p>\n<pre>&lt;header id=\"masthead\" class=\"site-header\"&gt;\r\n\u00a0 <strong>&lt;div class=\"wrapper\"&gt; &lt;!-- a\u00f1adimos un div wrapper --&gt;<\/strong>\r\n\u00a0 \u00a0 &lt;div class=\"site-branding\"&gt;\r\n\u00a0 \u00a0 \u00a0 <strong>&lt;!-- lo de aqu\u00ed no lo tocamos, es el logo del sitio web --&gt;<\/strong>\r\n\u00a0 \u00a0 &lt;\/div&gt;&lt;!-- .site-branding --&gt;\r\n\u00a0 \u00a0 &lt;nav id=\"site-navigation\" class=\"main-navigation\"&gt;\r\n\u00a0 \u00a0 \u00a0 <strong>&lt;!-- lo de aqu\u00ed no lo tocamos, es el men\u00fa del sitio web --&gt;<\/strong>\r\n\u00a0 \u00a0 &lt;\/nav&gt;&lt;!-- #site-navigation --&gt;\r\n\u00a0 <strong>&lt;\/div&gt; &lt;!-- cerramos nuestro div.wrapper --&gt;<\/strong> \r\n&lt;\/header&gt; &lt;!-- #masthead --&gt;<\/pre>\n<p>De este modo, centraremos el contenido del <strong>div<\/strong> que hemos creado, que en este caso es el logo y el men\u00fa.<\/p>\n<p>Para el <strong>footer.php<\/strong> vamos a hacer lo mismo, pero en este caso no seria necesario crear el <strong>div<\/strong>, con ponerle la clase <em><strong>wrapper<\/strong> <\/em>al <strong><em>div.site-info<\/em><\/strong> que hemos visto antes seria suficiente.<\/p>\n<pre>&lt;div class=\"site-info <strong>wrapper<\/strong>\"&gt;<\/pre>\n<p>Finalmente, habr\u00eda que a\u00f1adir otro <strong>div<\/strong> de la misma clase para tener el <strong>main<\/strong> y el <strong>aside<\/strong> con un ancho m\u00e1ximo, el uno al lado del otro y centrados. Aqu\u00ed es donde la cosa se complica un poco.<\/p>\n<p>Puesto que en PHP se usan varios archivos para generar el HTML que se env\u00eda al usuario, para a\u00f1adir el <strong>div.wrapper<\/strong> que necesitamos, vamos a a\u00f1adir la etiqueta de apertura en un archivo y la de cierre en otro archivo diferente. Concretamente, vamos a <strong>a\u00f1adir al final del header.php<\/strong> lo siguiente:<\/p>\n<pre>&lt;div class=\"wrapper\"&gt;<\/pre>\n<p>y <strong>al principio del footer.php<\/strong> (justo despu\u00e9s del c\u00f3digo PHP y justo antes del elemento HTML <strong>footer<\/strong>) vamos a a\u00f1adir lo siguiente:<\/p>\n<pre>&lt;\/div&gt; &lt;!-- .wrapper --&gt;<\/pre>\n<p>De ese modo, lograremos que el <strong>main<\/strong> y el <strong>aside<\/strong> se encuentren dentro de un elemento <strong>div<\/strong> de la clase <em><strong>wrapper<\/strong><\/em>.<\/p>\n<p>Tened cuidado al a\u00f1adir la etiqueta de apertura que el editor de WordPress nos puede a\u00f1adir la de cierre autom\u00e1ticamente sin que nos demos cuenta. As\u00ed que hay que revisar bien el c\u00f3digo.<\/p>\n<h2>Modificar el aspecto del tema<\/h2>\n<p>Ahora ya podemos meter un poquito de c\u00f3digo CSS. Para ello vamos a <strong>a\u00f1adir al final del archivo styles.css<\/strong> nuestro c\u00f3digo debidamente separado del resto.<\/p>\n<pre>\/* \r\n----------------------------------------------------------------------------------\r\n----------------------------------------------------------------------------------\r\n----------------------------------------------------------------------------------\r\nMI CODIGO CSS\r\n----------------------------------------------------------------------------------\r\n----------------------------------------------------------------------------------\r\n----------------------------------------------------------------------------------\r\n*\/\r\n\r\n.post, .page {\r\n\u00a0 margin: 0;\r\n}\r\n\r\na {\r\n\u00a0 text-decoration: none;\r\n}\r\n\r\na, a:visited, a:active {\r\n\u00a0 color: #456789;\r\n}\r\n\r\n.wrapper {\r\n\u00a0 max-width: 78rem; \r\n\u00a0 margin: 0 auto;\r\n}\r\n\r\n\/* cabecera *\/\r\n\r\n.main-navigation { \r\n\u00a0 width: auto;\r\n}\r\n\r\n.site-title {\r\n\u00a0 font-size: 2rem;\r\n\u00a0 margin: 0.5rem 0;\r\n}\r\n\r\n.site-description {\r\n\u00a0 margin: 0.5rem 0;\r\n}\r\n\r\n#masthead { \r\n\u00a0 background-color: #ABCDEF;\r\n}\r\n\r\n#masthead .wrapper { \r\n\u00a0 display: flex; \r\n\u00a0 justify-content: space-between;\r\n\u00a0 padding: 0.5rem; \r\n\u00a0 align-items: center;\r\n}\r\n\r\n\/* men\u00fa principal *\/\r\n\r\n#primary-menu&gt;li&gt;a {\r\n\u00a0 padding: 0.5rem 1rem;\r\n\u00a0 background-color: #456789;\r\n\u00a0 color: white;\r\n\u00a0 margin: 0 0.25rem;\r\n\u00a0 transition: all 250ms;\r\n}\r\n\r\n#primary-menu&gt;li&gt;a:hover {\r\n\u00a0 background-color: #56789A;\r\n}\r\n\r\n#primary-menu .sub-menu {\r\n\u00a0 flex-direction: column;\r\n\u00a0 background-color: #789ABC;\r\n}\r\n\r\n#primary-menu .sub-menu a {\r\n\u00a0 color: white;\r\n\u00a0 padding: 0.5rem 1rem;\r\n\u00a0 transition: all 250ms;\r\n}\r\n\r\n#primary-menu .sub-menu a:hover {\r\n\u00a0 background-color: #89ABCD;\r\n}\r\n\r\n\/* contenido *\/\r\n\r\n#page&gt;.wrapper { \r\n\u00a0 display: flex;\r\n\u00a0 padding: 0.5rem;\r\n}\r\n\r\n#primary {\r\n\u00a0 width: 70%;\r\n\u00a0 padding-right: 1rem;\r\n}\r\n\r\n\/* sidebar *\/\r\n\r\n#secondary {\r\n\u00a0 width: 30%;\r\n\u00a0 padding: 1rem;\r\n\u00a0 background-color: #ABCDEF;\r\n}\r\n\r\n#secondary ul {\r\n\u00a0 list-style: square;\r\n\u00a0 padding-left: 0;\r\n}\r\n\r\n\/* pie de p\u00e1gina *\/\r\n\r\n#colophon {\r\n\u00a0 background-color: #ABCDEF;\r\n}\r\n\r\n#colophon .wrapper {\r\n\u00a0 padding: 0.5rem; \r\n}<\/pre>\n<p>Ahora ya deber\u00edamos de tener un tema con un aspecto m\u00e1s adecuado. Obviamente, este c\u00f3digo CSS y las modificaciones que hemos hecho en la estructura HTML son solo ilustrativas del tipo de cosas que podemos hacer sin saber PHP. De hecho, este CSS de ejemplo no tiene ni responsive.<\/p>\n<h2>Crear una plantilla de p\u00e1gina<\/h2>\n<p>Ahora vamos a crear lo que se conoce como una plantilla de p\u00e1gina (tambi\u00e9n existen las plantillas de entrada). Ya que en la p\u00e1gina principal (y puede que en alguna m\u00e1s) puede que no nos interese tener la barra lateral.<\/p>\n<p>El archivo que se usa para generar las p\u00e1ginas es el archivo <strong>page.php<\/strong>. Vamos a hacer una copia de dicho archivo y le ponemos de nombre, por ejemplo, <strong>homepage.php<\/strong><\/p>\n<p><strong>Al principio del archivo tenemos un comentario PHP que vamos a modificar por el siguiente:<\/strong><\/p>\n<pre>\/**\r\n\u00a0 * Template Name: Ancho Completo\r\n\u00a0 * Description: Sin barra lateral\r\n\u00a0 * @package espai \r\n\u00a0 *\/<\/pre>\n<p>Obviamente, cambiando el <strong>\u00abpackage espai\u00bb<\/strong> por el vuestro.<\/p>\n<p>En la parte de c\u00f3digo PHP eliminaremos esta l\u00ednea:<\/p>\n<pre>get_sidebar();<\/pre>\n<p>Que es la encargada de generar la barra lateral\/aside (y que basicamente corresponde al archivo <strong>sidebar.php<\/strong>)<\/p>\n<p>Y en la parte de c\u00f3digo HTML cambiaremos el <strong>id=\u00bbprimary\u00bb<\/strong> por <strong>id=\u00bbprimary-full\u00bb<\/strong> (esto es para que el c\u00f3digo CSS que afecta a #primary no le afecte).<\/p>\n<p>Ahora es un buen momento para crear un par de p\u00e1ginas, una llamada Inicio y que debemos de indicar (en el panel derecho del editor de WordPress) que usar\u00e1 una plantilla de \u00abAncho Completo\u00bb y otra llamada Blog que usar\u00e1 la plantilla por defecto.<\/p>\n<p>A\u00f1adimos estas dos p\u00e1ginas a un men\u00fa que debemos crear en \u00abApariencia &gt; Men\u00fa\u00bb, y que debe de mostrarse en la zona \u00abPrimary\u00bb (la \u00fanica que hay).<\/p>\n<p>Finalmente en \u00abAjustes &gt; Lectura\u00bb indicamos que vamos a usar una p\u00e1gina de inicio \u00abest\u00e1tica\u00bb, de portada la que hemos creado como Inicio con la plantilla de \u00abAncho Completo\u00bb y para las entradas la p\u00e1gina Blog con la plantilla por defecto.<\/p>\n<h2>A\u00f1adir m\u00e1s zonas de men\u00fa y de widgets<\/h2>\n<p>Como el tema tiene solo una zona de widgets y una zona de men\u00fa existe la posibilidad que quieras a\u00f1adir alguna m\u00e1s. Para ello os invito a leer mis art\u00edculos sobre <a href=\"https:\/\/www.espai.es\/blog\/2017\/04\/anadir-zona-widgets-wordpress\/\">como crear una nueva zona de widgets<\/a> y <a href=\"https:\/\/www.espai.es\/blog\/2017\/03\/como-anadir-un-menu-a-un-tema-de-wordpress\/\">como crear\u00a0 una nueva zona de men\u00fa<\/a> en cualquier tema de WordPress.<\/p>\n<p>De hecho, antes hemos modificado el <strong>footer<\/strong> de la p\u00e1gina para a\u00f1adir un texto con un copyright que no se puede modificar desde el <strong>backend<\/strong>, por lo que podr\u00eda ser mucho mas interesante y vers\u00e1til a\u00f1adir en su lugar una zona de widgets para que se pueda a\u00f1adir ese texto con el copyright o cualquier otro <strong>widget.<\/strong><\/p>\n<h2>A\u00f1adir archivos CSS y JavaScript a nuestro tema de WordPress<\/h2>\n<p>Finalmente, vamos a modificar el archivo <strong>functions.php<\/strong><\/p>\n<p>A diferencia del resto de archivos PHP que hemos visto, este archivo solo contiene c\u00f3digo PHP, pero es el lugar adecuado para a\u00f1adir archivos CSS y archivos JS (JavaScript) a nuestro tema. En este ejemplo voy a a\u00f1adir el <a href=\"https:\/\/fontawesome.com\/\">font awesome<\/a> para poder usar sus iconos en mi tema.<\/p>\n<p>Debemos de buscar una funci\u00f3n llamada <strong>noseque_scripts()<\/strong>, en mi caso, se llama <strong>espai_scripts()<\/strong>, en tu caso depender\u00e1 del nombre de tu tema. En todo caso, deber\u00edas de buscar \u00ab_scripts()\u00bb en este archivo. Lo primero que se hace en esta funci\u00f3n es a\u00f1adir los estilos CSS del tema y luego un script llamado <strong>navigation.js <\/strong>Despu\u00e9s es un buen sitio para a\u00f1adir el font awesome del siguiente modo:<\/p>\n<pre>\/**\r\n* Enqueue scripts and styles.\r\n*\/\r\nfunction espai_scripts() {\r\n\u00a0 wp_enqueue_style( 'espai-style', get_stylesheet_uri(), array(), _S_VERSION );\r\n\u00a0 wp_style_add_data( 'espai-style', 'rtl', 'replace' );\r\n\r\n\u00a0 wp_enqueue_script( 'espai-navigation', get_template_directory_uri() . '\/js\/navigation.js', array(), _S_VERSION, true );\r\n\r\n<strong>\u00a0 \/* ejemplo de como a\u00f1adir un archivo CSS desde un CDN *\/<\/strong>\r\n<strong>\u00a0 wp_register_style('fontawesome', 'https:\/\/use.fontawesome.com\/releases\/v5.15.4\/css\/all.css', array(), '1.0', 'all');<\/strong>\r\n<strong>\u00a0 wp_enqueue_style('fontawesome');<\/strong>\r\n\r\n<strong>\u00a0 \/* ejemplo de como a\u00f1adir un script JavaScript desde un CDN *\/<\/strong>\r\n<strong>\u00a0 wp_enqueue_script('superscript', 'https:\/\/cdn-imaginarion.com\/superscript.js', array(), '1.0', true);<\/strong>\r\n\r\n<strong>\u00a0 \/* ejemplo de como a\u00f1adir un script JavaScript en la carpeta JS *\/<\/strong>\r\n<strong>\u00a0 wp_enqueue_script('mi-script', get_template_directory_uri() . '\/js\/mi-script.js', array(), '1.0', true);<\/strong>\r\n\r\n\u00a0 if ( is_singular() &amp;&amp; comments_open() &amp;&amp; get_option( 'thread_comments' ) ) {\r\n\u00a0 \u00a0 wp_enqueue_script( 'comment-reply' );\r\n\u00a0 }\r\n}\r\nadd_action( 'wp_enqueue_scripts', 'espai_scripts' );<\/pre>\n<p>En este ejemplo tambi\u00e9n ten\u00e9is c\u00f3mo a\u00f1adir scripts JavaScript tanto locales como desde un CDN.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>En este art\u00edculo hemos visto c\u00f3mo \u00abcrear\u00bb un tema \u00abdesde cero\u00bb, c\u00f3mo modificar su estructura para adaptarla a nuestras necesidades (a\u00f1adiendo\/eliminando elementos HTML, a\u00f1adiendo\/modificando atributos id y class,&#8230;), c\u00f3mo a\u00f1adirle nuestro c\u00f3digo CSS, c\u00f3mo crear una plantilla de p\u00e1gina, c\u00f3mo a\u00f1adir archivos CSS y JS externos, etc.<\/p>\n<p>Con todo lo explicado en este y otros art\u00edculos mencionados, deber\u00edais ser capaces de realizar vuestros \u00abpropios\u00bb temas de WordPress adaptados a las necesidades y con el aspecto deseado por los clientes.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Este art\u00edculo es una actualizaci\u00f3n de mis art\u00edculos anteriores sobre este mismo tema, crear un tema para WordPress desde cero y sin saber PHP, que pod\u00e9is encontrar aqu\u00ed. Dichos art\u00edculos est\u00e1n explicados m\u00e1s al detalle, en este art\u00edculo de actualizaci\u00f3n, me voy a centrar&#8230;<\/p>\n","protected":false},"author":23,"featured_media":12826,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_ef_editorial_meta_date_first-draft-date":"","_ef_editorial_meta_paragraph_assignment":"","_ef_editorial_meta_checkbox_needs-photo":"","_ef_editorial_meta_number_word-count":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[7,5],"tags":[323],"class_list":["post-12802","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-diseno-web","category-programacion","tag-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Crear un tema de Wordpress desde cero (sin saber PHP)<\/title>\n<meta name=\"description\" content=\"En este art\u00edculo veremos como crear un tema de WordPress a partir de un tema en blanco, sin saber PHP y personalizable para nuestros clientes\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Crear un tema de Wordpress desde cero (sin saber PHP)\" \/>\n<meta property=\"og:description\" content=\"En este art\u00edculo veremos como crear un tema de WordPress a partir de un tema en blanco, sin saber PHP y personalizable para nuestros clientes\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog Escola Espai\" \/>\n<meta property=\"article:published_time\" content=\"2021-12-27T15:55:12+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2021-12-28T10:01:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/12\/logo.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1000\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Abel Camarena\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Abel Camarena\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/\"},\"author\":{\"name\":\"Abel Camarena\",\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897\"},\"headline\":\"Crear un tema de WordPress desde cero (sin saber PHP)\",\"datePublished\":\"2021-12-27T15:55:12+00:00\",\"dateModified\":\"2021-12-28T10:01:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/\"},\"wordCount\":2035,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/12\/logo.jpg\",\"keywords\":[\"wordpress\"],\"articleSection\":[\"Dise\u00f1o Web\",\"Programaci\u00f3n\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/\",\"url\":\"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/\",\"name\":\"Crear un tema de Wordpress desde cero (sin saber PHP)\",\"isPartOf\":{\"@id\":\"https:\/\/www.espai.es\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/12\/logo.jpg\",\"datePublished\":\"2021-12-27T15:55:12+00:00\",\"dateModified\":\"2021-12-28T10:01:11+00:00\",\"author\":{\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897\"},\"description\":\"En este art\u00edculo veremos como crear un tema de WordPress a partir de un tema en blanco, sin saber PHP y personalizable para nuestros clientes\",\"breadcrumb\":{\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#primaryimage\",\"url\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/12\/logo.jpg\",\"contentUrl\":\"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/12\/logo.jpg\",\"width\":1000,\"height\":500,\"caption\":\"Crear un tema de Wordpress\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/www.espai.es\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Crear un tema de WordPress desde cero (sin saber PHP)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.espai.es\/blog\/#website\",\"url\":\"https:\/\/www.espai.es\/blog\/\",\"name\":\"Blog Escola Espai\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.espai.es\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897\",\"name\":\"Abel Camarena\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.espai.es\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/035501b0f14e120b1a49121758e2056b8d589fc43b9d3c3ad3670a197a90dddf?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/035501b0f14e120b1a49121758e2056b8d589fc43b9d3c3ad3670a197a90dddf?s=96&d=mm&r=g\",\"caption\":\"Abel Camarena\"},\"sameAs\":[\"http:\/\/www.espai.es\"],\"url\":\"https:\/\/www.espai.es\/blog\/author\/abel\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Crear un tema de Wordpress desde cero (sin saber PHP)","description":"En este art\u00edculo veremos como crear un tema de WordPress a partir de un tema en blanco, sin saber PHP y personalizable para nuestros clientes","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/","og_locale":"es_ES","og_type":"article","og_title":"Crear un tema de Wordpress desde cero (sin saber PHP)","og_description":"En este art\u00edculo veremos como crear un tema de WordPress a partir de un tema en blanco, sin saber PHP y personalizable para nuestros clientes","og_url":"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/","og_site_name":"Blog Escola Espai","article_published_time":"2021-12-27T15:55:12+00:00","article_modified_time":"2021-12-28T10:01:11+00:00","og_image":[{"width":1000,"height":500,"url":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/12\/logo.jpg","type":"image\/jpeg"}],"author":"Abel Camarena","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Abel Camarena","Tiempo de lectura":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#article","isPartOf":{"@id":"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/"},"author":{"name":"Abel Camarena","@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897"},"headline":"Crear un tema de WordPress desde cero (sin saber PHP)","datePublished":"2021-12-27T15:55:12+00:00","dateModified":"2021-12-28T10:01:11+00:00","mainEntityOfPage":{"@id":"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/"},"wordCount":2035,"commentCount":0,"image":{"@id":"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/12\/logo.jpg","keywords":["wordpress"],"articleSection":["Dise\u00f1o Web","Programaci\u00f3n"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/","url":"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/","name":"Crear un tema de Wordpress desde cero (sin saber PHP)","isPartOf":{"@id":"https:\/\/www.espai.es\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#primaryimage"},"image":{"@id":"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#primaryimage"},"thumbnailUrl":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/12\/logo.jpg","datePublished":"2021-12-27T15:55:12+00:00","dateModified":"2021-12-28T10:01:11+00:00","author":{"@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897"},"description":"En este art\u00edculo veremos como crear un tema de WordPress a partir de un tema en blanco, sin saber PHP y personalizable para nuestros clientes","breadcrumb":{"@id":"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#primaryimage","url":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/12\/logo.jpg","contentUrl":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/12\/logo.jpg","width":1000,"height":500,"caption":"Crear un tema de Wordpress"},{"@type":"BreadcrumbList","@id":"https:\/\/www.espai.es\/blog\/2021\/12\/crear-un-tema-de-wordpress-desde-cero-sin-saber-php\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.espai.es\/blog\/"},{"@type":"ListItem","position":2,"name":"Crear un tema de WordPress desde cero (sin saber PHP)"}]},{"@type":"WebSite","@id":"https:\/\/www.espai.es\/blog\/#website","url":"https:\/\/www.espai.es\/blog\/","name":"Blog Escola Espai","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.espai.es\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/b2d40404b9d987e3586e186c021ef897","name":"Abel Camarena","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.espai.es\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/035501b0f14e120b1a49121758e2056b8d589fc43b9d3c3ad3670a197a90dddf?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/035501b0f14e120b1a49121758e2056b8d589fc43b9d3c3ad3670a197a90dddf?s=96&d=mm&r=g","caption":"Abel Camarena"},"sameAs":["http:\/\/www.espai.es"],"url":"https:\/\/www.espai.es\/blog\/author\/abel\/"}]}},"jetpack_featured_media_url":"https:\/\/www.espai.es\/blog\/wp-content\/uploads\/2021\/12\/logo.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts\/12802","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/users\/23"}],"replies":[{"embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/comments?post=12802"}],"version-history":[{"count":22,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts\/12802\/revisions"}],"predecessor-version":[{"id":12830,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/posts\/12802\/revisions\/12830"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/media\/12826"}],"wp:attachment":[{"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/media?parent=12802"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/categories?post=12802"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.espai.es\/blog\/wp-json\/wp\/v2\/tags?post=12802"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}