Estructura de un theme WordPress

Para poder crear un Theme en WordPress hay que tener en cuenta algunas cosas:

Cada tema consta al menos de dos archivos que son styles.css e index.php

Solo esos dos.

Esta compuesto por mas archivos que en el 90% de los casos son:

home.php
functions.php
loop.php
single.php
page.php
archive.php
category.php
search.php
404.php
comments.php
author.php
date.php

Este grupo de archivos contiene un rango jerárquico en el cual index.php es el padre. Este buscara primero que nada a loop.php, single.php, page.php, archive.php,search.php y 404.php

crea un theme wordpress

Jerarquia de archivos en un tema wordpress

Cada pagina del blog a su vez esta compuesta por un header.php, index.php, sidebar.php y footer.php

El header.php recoge el titulo del blog y su descripción, como mínimo. El index.php por su parte tomara el titulo del post, el contenido del mismo (texto, imágenes, vídeo, etc) y los meta datos.

Estos hablan del autor, la fecha de publicación, los comentarios y en que categoría este se encuentra.

Luego tenemos el sidebar.php que es nada mas y nada menos que la barra lateral. Aquí van tus enlaces favoritos, categorías, calendario, y los tan populares widgets.

Por ultimo el footer.php abarcara el pie de pagina lugar en el cual puede ponerse por ejemplo el copyright.

anatomia de un theme wordpressEntonces para poder comenzar con el diseño se debe instalar un servidor web local que puede ser xampp, Appserv o alguno similar.

Recomiendo el primero por que es simple y se puede meter incluso en una memoria usb.

Luego de esto deberemos hacer una instalación de WordPress como si lo estuviéramos haciendo en la web. Pero en nuestro servidor local.

Lo primero que se hace es armar todo el contenido dentro del index.php para luego desglosarlo en los archivos antes mencionados.

Dentro de la carpeta  wp-content/themes crearemos una con el nombre de nuestro tema. Le ponemos como nombre “mi tema” y con el Notepad ++ o el de Windows creamos dos archivos dentro de la misma:

index.php

style.css

Añadimos las clásicas etiquetas de apertura de un documento html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head profile="http://gmpg.org/xfn/11">
<title><?php bloginfo('name'); ?><?php wp_title(); ?></title>
<meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" /> <!-- leave this for stats please -->
<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen" />
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="<?php bloginfo('rss2_url'); ?>" />
<link rel="alternate" type="text/xml" title="RSS .92" href="<?php bloginfo('rss_url'); ?>" />
<link rel="alternate" type="application/atom+xml" title="Atom 0.3" href="<?php bloginfo('atom_url'); ?>" />
<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
<?php wp_get_archives('type=monthly&format=link'); ?>
<?php //comments_popup_script(); // off by default ?>
<?php wp_head(); ?>
</head>
<body>
</body>
</html>

Nos topamos con las primeras funciones de WordPress: bloginfo con el parámetro “name” y wp_tittle que devolverá el titulo del blog. Suelen ser funciones php que llaman a distintas funcionalidades del CMS.

Con el parámetro “stylesheet_url” invocamos nuestra hoja de estilos. La misma debe contener de forma obligatoria la siguiente información:

/*
Theme Name: Nombre del tema.
Theme URI: http://www.streamingwords.com.ar
Description: Desarrollo de un tema.
Version: 1.0
Author: El nombre del autor
Author URI: http://www.streamingwords.com.ar/
*/

Deberemos entonces pegar el código html en index.php y el css arriba mencionado en style.css

Luego, si desde el navegador invocamos a nuestro blog con http://localhost/wordpress veremos que se muestra una pagina en blanco. En la misma debería verse el titulo del blog. Esto claro esta si previamente activamos nuestro theme desde el panel de administración.

Para tenerlo en formato de hipervínculo podríamos agregar a bloginfo(‘url’):

<a href=”<?php bloginfo(‘url’); ?>”><?php bloginfo(‘name’); ?></a>

Ahora al hacer click en el titulo del blog seremos llevados automáticamente al home.
Aquí vemos aparecer un nuevo parámetro “url” cuyo objetivo es tomar nuestra dirección web para que cuando pinchemos en el enlace seamos llevados a donde corresponde. En este caso pinchando en el nombre del blog que lo obtenemos con:

<?php bloginfo(‘name’); ?>

Ambas sentencias están encerradas entre las etiquetas xhtml <a href></a>.

El paso siguiente es añadir la ya famosa etiqueta <h1></h1> a lo anterior quedando de la siguiente forma:

<h1><a href=”<?php bloginfo(‘url’); ?>”><?php bloginfo(name); ?></a></h1>

Y aquí es donde aparece el parámetro “description”:

<?php bloginfo(‘description’); ?>

Que lo que hace es pedirle a bloginfo que obtenga la descripción del blog. Que es nada mas y nada menos que:

“Just another WordPress blog”

Quedando el código de esta forma:

<h1><a href=”?php bloginfo(‘url’); ?>”><?php bloginfo(‘name’); ?></a></h1>
<?php bloginfo(‘description’); ?>

Luego encerramos esto en una etiqueta div de esta forma:

<div>
<h1><a href=<?php bloginfo(‘url’); ?>”><?php bloginfo(name); ?></a></h1>
</div>

Hemos encerrado titulo y descripción en una etiqueta div para poder trabajarlos después con CSS. Para lo cual le agregaremos un ID a dicho div:

Desarrollo de un tema WordPress desde cero.

<div id = "header">
<h1><a href=”?php bloginfo(‘url’); ?>”><?php bloginfo(‘name’); ?></a></h1>
<?php bloginfo(‘description’); ?>
</div>

El “Loop”

Este es el momento en el que agregaremos un div con id contenedor de la siguiente forma:

<div id=”container”></div>

Esta caja o div tiene por objetivo separar el contenido de la cabecera, la barra lateral y el pie de pagina. Dentro del mismo colocaremos el siguiente código:

<?php if(have_posts()) : ?><?php while(have_posts()) : the_post(); ?>
<?php endwhile; ?>
<?php endif; ?>

Lo que acabamos de escribir es el famoso bucle de WordPress. Si lo separamos podremos entender mejor que es lo que hace: if(have_posts()) Primero chequeara si tenemos algun post. Algo así como “Si tengo entradas…” while(have_posts())  De ser así se inicia el bucle while que se ejecutara siempre que lo que esta entre paréntesis sea true. Algo así como “Mientras tenga nuevas entradas” the_post  Llamara a los post o entradas para mostrarse. “Mostrar entradas” endwhile;  Cerrara el proceso que se inicio al principio. endif; Concluira el if. El loop siempre estara condicionado por los elementos que nosotros le indiquemos que muestre. Si en el panel de administracion configuramos el blog para que devuelva 10 entradas. Este bucle traera por defecto 10 entradas. Si ahora guardamos nuestro documento y refrescamos el navegador deberiamos obtener un “Hola Mundo”. Que suele ser el primer post que trae por defecto WordPress cuando lo acabamos de instalar.

Wordpress Loop en accion. Procederemos agregando la siguiente linea:

<h2><a href=”<?php the_permalink(); ?>”><?php the_title(); ?></a></h2>

“the_permalink” llama a la localizacion o direccion de cada post o entrada. Esto es para que cada vez que pinchamos en el titulo de alguna seamos llevados a la lectura completa de la misma, por medio de the_title

Hecho esto procederemos a agregar debajo la siguiente nueva funcion:

<?php the_content(); ?>

Que nada mas y nada menos lo que hace es devolvernos el
contenido del post. Podemos corroborarlo guardando el documento y actualizando la pagina.

Si hacemos click en Ver -> Codigo fuente podemos notar que el texto (del post) se encuentra encerrado en etiquetas <p> </p> que wordpress le asigna al mismo.

Para poder darles formato a las mismas posteriormente deberemos encerrar la funcion antes mencionada en un div con nombre de clase “entry”. Y deberia quedar de esta forma:

Estos enlaces los agregaremos utilizando la siguiente funcion: