EL NÚCLEO
Como ya lo mencioné, WordPress nació como un manejador de contenidos para blogs, he allí que tiene 2 tipos de contenidos principales, las entradas (post) y lás páginas (page). Existen otros tipos de contenidos que ahora no veremos que son, los adjuntos (attachments), menús (nav).
WordPress guarda todo lo que tiene que ver con esos contenidos en la tabla, wp_posts. Donde tiene campos importantes como son:
- Título (post_title)
- Contenido (post_content)
- El extracto, una introducción al contenido (post_excerpt)
- El slug (post_name)
- El guid o ruta base (guid)
- El ID (ID, o post_ID)
- Post parent (el ID del post padre en el caso de lás páginas) (post_parent)
- Y mi favorito, post_meta (este esta en wp_postmeta) pero es un campo importantísimo para guardar data relacionada al contenido
Entendido eso, lo primero que tenemos que saber es la anatomía de un tema.
Con ello podemos ver en resumen que (con más detalle aquí):
- front-page.php – Será nuestra página de inicio
- page.php – Será la plantilla de una página corriente
- index.php – Será la plantilla del blog
- single.php – Será la de nuestra la plantilla de un post (entrada)
- functions.php – Donde podrás colocar tus filtros, acciones o modificaciones al comportamiento normal de WordPress
Y otras plantillas que no son tan necesarias en este momento, como:
- category.php – Cuando estamos en una categoría del blog
- 404.php – Se muestra cuando no se encuentra la página
- search.php – En resultados de búsqueda
- archives.php – Para los archivos mensuales, anuales, etc
- author.php – Si deseamos mostrar información de un autor con sus artículos por ejemplo
- attachment.php, image.php – Para mostrar los adjuntos o imágenes de alguna forma
Para hacer un tema se necesitan de 2 cosas: index.php y style.css
style.css
Este archivo tendrá la cabecera que identifica al tema, dentro de nuestro administrador (Apariencia – Temas).
/* Theme Name: Twenty Thirteen Theme URI: http://wordpress.org/themes/twentythirteen Author: the WordPress team Author URI: http://wordpress.org/ Description: The 2013 theme for WordPress takes us back to the blog, featuring a full range of post formats, each displayed beautifully in their own unique way. Design details abound, starting with a vibrant color scheme and matching header images, beautiful typography and icons, and a flexible layout that looks great on any device, big or small. Version: 1.0 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Tags: black, brown, orange, tan, white, yellow, light, one-column, two-columns, right-sidebar, flexible-width, custom-header, custom-menu, editor-style, featured-images, microformats, post-formats, rtl-language-support, sticky-post, translation-ready Text Domain: twentythirteen This theme, like WordPress, is licensed under the GPL. Use it to make something cool, have fun, and share what you've learned with others. */
(Esta la tome de WordPress, pero en resumen contiene el nombre, autor y versión, tipo de licencia, entre otra información)
LA BASE DE WORDPRESS
Este CMS, está basado en loops, los loops son ciclos con ciertos argumentos que mandan a traer información de la base de datos y la imprimen con los tags que querramos.
En index.php, un simple loop podría ser:
<?php while ( have_posts() ) : the_post() ?> Y aquí dentro tus tags... <?php while; ?>
Una de las cosas que más me gustan de WordPress, es la limpieza de su código, en comparación con Joomla!, este solo te devuelve lo que explícitamente deseas y la facilidad en comparación con los nodos.
FUNCTIONS.PHP
Este archivo tendrá todas las funciones que en su momento modificarán comportamientos en un plugin, en un query de posts, o añadirán funcionalidad a nuestro tema.
EXTENDIENDO WORDPRESS
WordPress tiene 2 formas principales para modificar el comportamiento de un tema, de un query o un plugin. Estos son los hooks y filtros.
Hooks – Son “puntos” en WordPress donde puedes “enganchar” alguna función, agregando alguna funcionalidad en el proceso donde esta corriendo.
Ej. Cuando guardas un post, este corre el hook save_post, tu podrías mandar un correo al ser publicado un post, por medio del a función add_action, que veremos en ediciones posteriores.
Filters – Son, a diferencia del los hooks, puntos donde puedes modificar el comportamiento o salida del un “algo”, como lo dice su nombre, son filtros para datos.
Ej. Quieres ordenar siempre los posts por orden alfabético, utilizas el filtro pre_get_posts.
Los buenos temas y plugins tienen filtros y hooks en lugares estratégicos que te permite modificar sin tener que modificar el código base sino, en function.php
En el siguiente capítulo, empezaremos haciendo un tema, ya que tenemos una base teórica (yo se, es un poco aburrido).
Fuente: http://jepser.com/idea/wordpress-como-debe-ser-capitulo-1-entendiendo-wordpress/
Si se quiere acceder a la página principal, WP buscará en nuestro theme el template ‘front-page.php’, en caso de que no lo encuentre buscará ‘home.php’; y, finalmente, si no lo encuentra utilizará el template ‘index.php’.
Como se muestra en la imagen, cualquier petición que se haga al servidor, en caso de que no haya ningún template que lo recoja, se utilizará ‘index.php’. Por eso es recomensable usar ‘index.php’ como la página principal, y no ‘home.php’ o ‘front-page’.
A su vez, un buen theme tiene que saber atender todas las peticiones distintas de la manera más personalizada posible (y coherente a nuestro sitio web).
Por lo tanto, mi punto de vista es que el theme debe tener como mínimo los siguientes templates:
Obviamente, si se quiere hacer un theme ‘estático’, es decir, sin posts, solo con páginas de ‘Quienes somos’, ‘Nuestros servicios’ y ‘Contacto’, te puedes ahorrar los templates ‘search.php’, ‘single.php’, ‘archive.php’.
No me gustan los templates que dependen del ID porque es algo muy específico; es más, primero se debería crear el elemento para que tenga su ID y, posteriormente, se definiría su template. Muy engorroso para mi gusto, pero viable según las necesidades de cada uno.
La manera definitiva de entender la jerarquía de templates es probándolo uno mismo.
fuente: http://oropensando.com/2013/11/28/entendiendo-la-jerarquia-de-los-archivos-de-un-wordpress-theme/
Paso 4
Plantillas básicas
Como hemos comentando, un tema es un conjunto de ficheros que trabajan juntos para crear una presentación única para nuestro sitio. La expresión más mínima de este conjunto de archivos se reduciría a dos: style.css e index.php. Style.css controlaría el estilo e Index.php el código final XHTML a mostrar, además de definir semánticamente nuestro blog. Será el que le dará la estructura. De aquí en adelante podemos crear tantos distintos archivos y subdivisions como queramos para hacer el estilo y la estructura de nuestro blog tan compleja como deseemos.
Existen, para hacerlo más fácil todavía, un número por defecto de plantillas que podremos usar directamente (como pueden ser search.php o comments.php), aun cuando es posible crear las nuestras propias. Existen dos tipos básicos: los módulos, que serán como trozos de código que reutilizaremos en varias páginas; y las plantillas de página. Luego, en la portada y en las páginas de categorías (que crearemos a partir de la plantilla de categoría category.php, por ejemplo), tendremos los módulos header, footer y sidebar, por ejemplo.
WordPress estructura internamente estas plantillas por defecto con una jerarquía propia que debemos conocer para poder usarlas. Y siempre las buscará primeramente dentro de la carpeta que contiene nuestro tema, tanto para los módulos como para las plantillas de páginas. Para llamar a estas plantillas por defecto dentro de cada una de las páginas usaremos códigos y funciones preconfiguradas por el propio WordPress. Un ejemplo de código de página básica sería el del archivo adjunto.
En negrita, aparecen resaltadas las funciones propias de WordPress para llamar a los módulos de la cabecera (header), contenido lateral o secundario (sidebar) y pie de la página (footer). En el tema de ejemplo, hemos usado, además de los citados: comments. php, para mostrar los comentarios; y searchform.php, para el formulario de búsqueda. Hay más, pruébalos y descubre sus posibilidades. También veremos cómo crear nuestros propios módulos más adelante.
Paso 5
La jerarquía de páginas
Las plantillas de páginas por defecto pueden estructurarse por secciones. WordPress tiene una jerarquía propia de plantillas. Es decir, dependiendo del tipo de página o sección a la que queramos llamar o tipo de contenido a mostrar, tiene formas de nombrar a dichas plantillas que le gustan más que otras. Buscará dichos nombres antes que nada, si encuentra plantillas llamadas así las mostrará sin preocuparse de más. Si no, busca el siguiente nombre que más le gusta hasta que termina la jerarquía de nombres y recurre en última instancia a la plantilla base de todas (index.php). Estas son las plantillas por defecto principales. En el listado que ofrecemos a continuación las pondremos por orden de mayor a menor importancia.
-Para la portada o página principal de nuestro blog podemos usar nombres como: 1. home.php o 2. index.php (de hecho index.php es algo así como el "chico-para-todo" y la plantilla de las plantillas).
-Para mostrar una entrada llamará a: single. php o index.php.
-Para una categoría: 1. category-X.php (siendo X el ID de dicha categoría dentro de la base de datos y fácilmente reconocible en el panel de administración), 2. category.php, 3. archive.php o 4. index.php.
-Para mostrar todas las entradas de un mismo autor: 1. author.php, 2. archive.php o 3. index.php.
-Para páginas de archivos mensuales, diarios o semanales: 1. date.php, 2. archive.php o 3. index.php.
-Para páginas específicas (como Acerca de nosotros o Info especial de mi familia, por ejemplo) podremos usar: 1. page.php o 2. index.php.
-Para la página de resultados de búsqueda: search.php o index.php. O para crear la página de error: 404.php o index.php.
Así, por ejemplo, si el usuario intenta acceder a nuestro blog (www.midominio.org), WordPress buscará primero la plantilla llamada home.php, y solo si esta no está, entonces acudirá a index.php para generar la página de inicio de nuestro blog.
Paso 6
Etiquetas condicionales
Supongamos ahora que el usuario quiere acceder a una categoría determinada de nuestro blog para ver sus entradas. Bien, no tenemos creada una plantilla category.php, pero sí archive.php. No la hemos creado porque las diferencias entre la página de categoría y la de archivos del mes eran mínimas y hemos preferido fundirlas en una. Mediante etiquetas condicionales, podemos mostrar esas diferencias mínimas en nuestra páginaarchive.php.
Ver el archivo adjunto
Mediante el condicional básico de PHP if y la función preconfigurada is_category() e is_day(), podemos hacer que aparezcan titulares distintos dependiendo si se está mostrando una categoría o las entradas para un día concreto del año. Hay numerosas opciones posibles. Lo de siempre, estúdiatelas para sacarle el máximo provecho y mira nuestro caso para ver más ejemplo de llamadas condicionales.
Paso 7
Creando nuestras plantillas
Nos queda por ver cómo hacer nuestras propias plantillas. Obsérvese el código que aparece en el archivo adjunto
Queremos mostrar un contenido lateral en nuestra página principal y será muy diferente al que aparece en el resto de las páginas. Para ello, mejor que usar un condicional como en el ejemplo anterior, creamos el fichero sidebarHome.php y lo alojamos en el directorio principal de nuestro tema. Es todo. Solo tenemos que llamarlo desde nuestra plantilla mediante el trozo de código resaltado en negrita.
Paso 8
El nudo que todo lo une
The Loop (El Lazo) es un término que se refiere al proceso principal de WordPress. Se utiliza en las plantillas para mostrar nuestros posts a los visitantes. Si queremos mostrar varios en una misma página, siempre tendremos que usarlo. En el fondo, no es más que un bucle PHP. WordPress trabaja de la siguiente manera: se asegura de que todos los archivos necesarios están presentes, procesa todos los ajustes que ha realizado el usuario (número de posts a mostrar en una determinada página, si los comentarios están disponibles, etc.), mira a ver lo que el usuario está preguntando, se conecta a la base de datos y almacena los resultados en una variable.
Aquí es donde entra en acción The Loop, al acceder a esta variable y usar los valores recogidos para mostrarlos en la página. Cuanto menos específico es lo que pregunta o quiere el usuario, menos complicado será el mostrar este proceso. En el primer archivo adjunto a este paso tenéis un ejemplo de plantilla index.php básica, donde la parte del bucle ha sido resaltada en negrita.
Lo primero que hace es asegurarse de que hay posts para mostrar mediante la función have_post(). Si tenemos posts, un bucle condicional de PHP comienza y se ejecutará, evidentemente, hasta que la condición no se cumpla. Luego, como vemos en el código, mientras tengamos, se ejecutará lo que sea dentro del condicional. La función the_post() recoge la información de cada post dentro del conjunto de entradas agrupadas mendiante la función have_post() y la prepara para ser inmediatamente mostrada.
Después, finalmente, mostramos el contenido del post mediante the_content(). Lo que aparecerá en el navegador será un listado de contenidos de nuestras entradas. Entendiendo esto, entendemos el 90% del funcionamiento de WordPress. El resto será complicar el loop tanto como queramos. En el ejemplo del segundo archivo adjunto añadimos información como el título, la fecha y el autor de cada post.
Paso 8
El nudo que todo lo une
The Loop (El Lazo) es un término que se refiere al proceso principal de WordPress. Se utiliza en las plantillas para mostrar nuestros posts a los visitantes. Si queremos mostrar varios en una misma página, siempre tendremos que usarlo. En el fondo, no es más que un bucle PHP. WordPress trabaja de la siguiente manera: se asegura de que todos los archivos necesarios están presentes, procesa todos los ajustes que ha realizado el usuario (número de posts a mostrar en una determinada página, si los comentarios están disponibles, etc.), mira a ver lo que el usuario está preguntando, se conecta a la base de datos y almacena los resultados en una variable.
Aquí es donde entra en acción The Loop, al acceder a esta variable y usar los valores recogidos para mostrarlos en la página. Cuanto menos específico es lo que pregunta o quiere el usuario, menos complicado será el mostrar este proceso. En el primer archivo adjunto a este paso tenéis un ejemplo de plantilla index.php básica, donde la parte del bucle ha sido resaltada en negrita.
Lo primero que hace es asegurarse de que hay posts para mostrar mediante la función have_post(). Si tenemos posts, un bucle condicional de PHP comienza y se ejecutará, evidentemente, hasta que la condición no se cumpla. Luego, como vemos en el código, mientras tengamos, se ejecutará lo que sea dentro del condicional. La función the_post() recoge la información de cada post dentro del conjunto de entradas agrupadas mendiante la función have_post() y la prepara para ser inmediatamente mostrada.
Después, finalmente, mostramos el contenido del post mediante the_content(). Lo que aparecerá en el navegador será un listado de contenidos de nuestras entradas. Entendiendo esto, entendemos el 90% del funcionamiento de WordPress. El resto será complicar el loop tanto como queramos. En el ejemplo del segundo archivo adjunto añadimos información como el título, la fecha y el autor de cada post.
Paso 9
Recomendaciones básicas
Como hemos visto, desarrollar un tema no es un proceso muy complicado. Te hemos dado las bases para entender cómo funciona este elemento y cuál es su estructura básica. Ya sabes lo que es la jerarquía de páginas de WordPress, los módulos y las plantillas. Cómo opera el famoso The Loop o bucle para mostrar varios posts a la vez en tu navegador, e incluso hemos repasado cómo desarrollar plantillas propias. Suficiente para que te lances.
Antes de nada, estructura tu trabajo bien. Pregúntate que estructura deseas para tu blog, si contendrá comentarios o los cerrarás, si quieres tener un calendario o un listado de enlaces, qué clase de módulos, el tipo de gráficos y tipografía, colores, etc... Y en función de ello desarrolla tu tema. Te evitará perder mucho tiempo. Y consulta nuestro ejemplo donde encontrarás con más detalle cada uno de los códigos básicos que hemos visto aquí.
Paso 10
Enlaces interesantes
Cómo usar bien los temas:
Desarrolla un tema:
Aprende más de CSS y PHP:
Listado de artículos para el desarrollo de temas:
Etiquetas básicas en el desarrollo de temas:
Etiquetas condicionales:
Repositorio de temas de WordPress:
- See more at: http://www.pcactual.com/articulo/zona_practica/paso_a_paso/4801/curso_wordpress_probador_los_blogs.html#sthash.arf76lTj.dpuf
fuente: http://www.pcactual.com/articulo/zona_practica/paso_a_paso/4801/curso_wordpress_probador_los_blogs.html
...........
...........
Páginas diferentes por categorías en wordpress (distintas single, page y category por categoría)
Si trabajas con WordPress, es más que posible que hayas necesitado crear una página (page.php), una plantilla para listar post (category.php) y/o una plantilla específica para mostrar las entradas de una categoría específica.
Por ejemplo: una página de contacto que tenga un diseño diferente al resto de las páginas estáticas de tu sitio, o una plantilla para mostrar las entradas de una determinada categoría (ejemplo para mostrar tu portfolio) de forma distinta a como se muestran las entradas del resto de categorías (por ejemplo el blog). Y por consecuencia con esta última, necesitas mostrar con diferentes plantillas las entradas individuales (single.php) de tuportfolio y las de tus entradas del blog.
Por ejemplo: una página de contacto que tenga un diseño diferente al resto de las páginas estáticas de tu sitio, o una plantilla para mostrar las entradas de una determinada categoría (ejemplo para mostrar tu portfolio) de forma distinta a como se muestran las entradas del resto de categorías (por ejemplo el blog). Y por consecuencia con esta última, necesitas mostrar con diferentes plantillas las entradas individuales (single.php) de tuportfolio y las de tus entradas del blog.
Las dos primeras, wordpress te lo hace facilmente, para el último caso tendremos que crear un pequeño snippet. Vamos por partes:
1. Distintas plantillas para cada listado de post por categorías (category.php)
Esta es facil. WordPress entiende que si creas una plantilla category-n.php, donde n es la id de la categoría que quieres mostrar de distinta forma, entonces esa es la plantilla que tiene que usar para listarla. Por ejemplo, si siguiendo el ejemplo anterior, queremos enseñar el listado de nuestros trabajos, que hemos categorizado con la categoría padre “portfolio” , de distinta forma a como mostramos el listado de post normales (blog), y la id de la categoría “portfolio” es 1, simplemente tenemos que crear un nuestro theme una plantilla llamada category-1.php donde estará la plantilla para mostrar el portfolio.
De esta manera tendremos una plantilla category.php que será la plantilla por defecto, y otra llamada category-1.php que será la que use wordpress ara mostrar los post de la categoría portfolio.
De esta manera tendremos una plantilla category.php que será la plantilla por defecto, y otra llamada category-1.php que será la que use wordpress ara mostrar los post de la categoría portfolio.
2. Distintas páginas estáticas ad hoc (page.php)
Esto aún es más sencillo. WordPress usa page.php como plantilla por defecto para mostrar las páginas estáticas. Pero si creas una página estática llamana por ejemplo contacto comercial, y quieres que tenga una plantilla diferente, simplemente tienes que crear un template llamado como tu enlace permanente (si este fuera: www.tusitioweb/contacto), la plantilla se llamaría contacto.php, esto es, el nombre del permalink (http://tusitioweb/contacto).
3. Distintas plantillas para mostrar tus entradas individuales, dependiendo de la categoría (diferentes single.php para cada categoría).
En este caso WordPress no nos ofrece ningún método mágico y tendremos que crear algo de código. Afortunadamente en google se encuentra todo. Veamoslo con un ejemplo.
Caso: queremos mostrar los detalles de nuestros trabajos (categoría padre portfolio) de distinta forma a cómo se muestran los post de nuestro blog (todas las demás categorías menos aquellas cuya categoría padre es portfolio).
El problema es que la categoría padre portfolio se subdivide en bastantes más categorías hijas y nietas (como por ejemplo: desarrollo web o diseño de interacción).
El problema es que la categoría padre portfolio se subdivide en bastantes más categorías hijas y nietas (como por ejemplo: desarrollo web o diseño de interacción).
Solución: En la plantilla single.php, que es la encargada de mostrar las entradas individuales, preguntamos al loop cual es la categoría padre del post que queremos mostrar, ojo la categoría final, no la propia categoría del post, sino la de nivel superior. Si la categoría superior es la que queremos discriminar, le decimos que use una plantilla que hemso creado para ella y si no lo es, le decimos que use una plantilla single por defecto.
Vemoslo: Para empezar creamos las dos plantillas diferentes, por un lado la plantilla que va a mostrar las entradas pertenecientes a portfolio y la llamamos (como queramos pero por seguir un patrón) single-1.php (esto es con el -n donde n es la id de la categoría, para seguir un patrón reconocible y por semejanza a como se hace con las plantillas de listados de categorías o category.php). Por otro lado creamos una plantilla por defecto para mostrar el resto de las entradas que no caen en el caso anterior y la llamamos single-default.php. Y ya está prácticamente todo hecho, sólo tienes que crear el interruptor en php necesario en tu single.php (que es la plantilla a la que wordpress irá automáticamente cuando quiera mostrar una entrada individual). De esta manera basta con cortar y pegar el sguiente código, sustituyendo el nombre de la categoría por el tuyo:
1
2
3
4
5
6
7
8
9
10
| <?php if ( have_posts() ) { the_post(); rewind_posts(); } $category = get_the_category(); $parent = get_cat_name( $category [0]->category_parent); if ( $parent == 'el-nombre-de-tu-categoría' ) { include (TEMPLATEPATH . '/single-1.php' ); } else { include (TEMPLATEPATH . '/single-default.php' ); } ?> |
[También se puede hacer sin preguntar por la categoría padre, sino por las propias categorías (ver cómo), pero me parece que lo normal es que se haga siempre por una categoría padre, así que este código es un poco más sofisticado].
Y eso es todo. Cualquier cosilla que no me haya explicado bien, o cualquier errata, se agradece que se comente.
PD. Aquí no he hablado de cómo hacer plantillas, porque asumo que si llegas a este problema es que ya te desemvuelves con los themes de wordpress lo suficiente como para hacer temas sencillos para blogs. Y además se asume que tiene ya bien aprendida lajerarquía de plantillas de wordpress.
fuente; http://www.albertofortes.com/blog/2010/06/24/paginas-diferentes-por-categorias-en-wordpress-distintas-single-page-y-category-por-categoria/
No hay comentarios.:
Publicar un comentario