Crear un theme para WordPress III

30 / Noviembre / 2006

single.php

Creamos un nuevo archivo y lo guardamos como single.php, este archivo es el que manda a llamar únicamente el post al que entra el usuario, aquí es donde podemos ó cambiarle el aspecto del post a como se muestra en el index, hacer uso de otro tipo de referencias al código del loop y otras tantas cosas, ahora lo único que haremos será dejar nuestro post como lo mostramos en el index.php

Para empezar, vamos a mandar a llamar el header de nuestro site, y ponemos la siguiente línea:

PHP:
  1. <?php get_header(); ?>

 

Esto en especial, que hace referencia al "get" es para obtener los archivos, vienen algunos predefinidos en WordPress, como serían:

  • get_header
  • get_sidebar
  • get_footer

Todas las demás funciones pueden encontrarlas en wp-includes/template-functions-general.php

Continuamos, aquí de la misma forma se maneja el loop de WordPress, pero lo manejaremos de la siguiente forma, será muy similar a lo que hicimos en el index.php como les mencionaba arriba.

El Loop

Comenzamos con la sentencia para que si es válida se genere el loop.

PHP:
  1. <?php if (have_posts()) : while (have_posts()) : the_post(); ?>

 

Contenedor del post

Continuamos abriendo nuestra división para lo que será el post

PHP:
  1. <div class="post" id="post-<?php the_ID(); ?>">

 

Fecha de publicación

Lo que sigue será la fecha de publicación:

PHP:
  1. <acronym class="published" title="<?php the_time('F jS, Y'); ?>"> <span class="pub-month">
  2.     <?php the_time('M'); ?>
  3.     </span> <span class="pub-date">
  4.     <?php the_time('j'); ?>
  5.     </span> </acronym>

 

Título del post

El título y nuestra liga a la edición del post si estamos loggeados y tenemos permisos para editar post podremos ver un asteristo ( * )

PHP:
  1. <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>">
  2.       <?php the_title(); ?>
  3.       </a>
  4.       <?php edit_post_link('*', '<sup>', '</sup>'); ?>
  5.     </h2>

 

Hasta este punto, lo que hemos hecho es copiar y pegar lo que habíamos hecho anteriormente en el index.php de aquí cambiaremos el nombre de una que otra función y añadiremos otras.

Detalles del post

Los detalles del post a simple vista parece lo mismo que hicimos en el index.php

PHP:
  1. <small> Publicado en
  2.     <?php the_category(', ') ?>
  3.     por
  4.     <?php the_author() ?>
  5.     y tiene
  6.     <?php comments_number(__('0 Comentarios'), __('Un Comentario'), __('% Comentarios')); ?>
  7.     </small>

 

Lo único que cambiamos fué la parte de comments_number(); que en el index.php es comments_popup_link(); esto es por que wordpress almacena aparte el número de comentarios además de que nosotros en el index lo ocupamos como liga hacia el formulario de comentarios; que también aquí es posible usando "anclas" y lo pondríamos de la siguiente forma:

PHP:
  1. <small> Publicado en
  2.     <?php the_category(', ') ?>
  3.     por
  4.     <?php the_author() ?>
  5.     y tiene
  6.     <a href="#gocommentForm"><?php comments_number(__('0 Comentarios'), __('Un Comentario'), __('% Comentarios')); ?></a>
  7.     </small>

 

El nombre de nuestra ancla será goCommentForm, que la definiremos más abajo en donde mandamos a llamar el template de nuestros comentarios.

El contenido de nuestra entrada

Ahora viene la parte del contenido que hemos escrito en nuestro post al verlo como entrada completa:

PHP:
  1. <div class="entry">
  2.       <?php the_content('Continuar leyendo &raquo;'); // Contenido?>
  3.       <?php link_pages('<p><strong>P&aacute;ginas:</strong> ', '</p>', 'number'); // El uso de paginas internas en el post ?>
  4.     </div>

 

Recordarán que en el index.php solo teníamos la parte de the_content(); ahora añadimos lo que es link_pages();, esto se usa dándoles un ejemplo visible, este post, que consta de varias páginas y en la parte de abajo viene "Páginas 1 2 3 ... " para esto pueden ponerlo de varias formas:

PHP:
  1. <?php wp_link_pages('pagelink=Pagina%'); ?>

 
Con este código obtendrían algo como Pagina 1 Pagina 2 Pagina 3

También pueden manejarlo con tipo siguiente y anterior, para que no se estén salteando las páginas

PHP:
  1. <?php link_pages('<p>', '</p>', 'next', ' &raquo;', '&laquo; '); ?>

 
Con este código obtendrían solo las flechas de anterior y siguiente « »

Pueden jugar con esta parte si es que usarán este tipo de navegación en sus entradas, para más info pueden ir aquí

Termina el divisor del post

Es hora de cerrar la división de nuestro post, para eso solo ponemos lo siguiente:

PHP:
  1. </div>

 

Navegación entre posts

Ahora nos encontramos con otra navegación, pero esta es entre post, si se dán cuenta en la parte de abajo de esta entrada pueden pasarse al siguiente post ó al anterior de una manera muy rápida, para eso hacemos lo siguiente:

PHP:
  1. <div class="navigation">
  2.     <div class="alignleft">
  3.       <?php previous_post_link('&laquo; %link') ?>
  4.     </div>
  5.     <div class="alignright">
  6.       <?php next_post_link('%link &raquo;') ?>
  7.     </div>
  8.   </div>

 

  • previous_post_link(); - Para ir al post anterior
  • next_post_link(); - Para ir al siguiente post
  • %link - Pondrá el titulo del post como enlace

Pueden poner con lo que mejor se identifiquen dentro de los paréntesis, algo como siguiente entrada, post anterior ó simplemente dejar que el título del post sea la liga, que en lo personal recomendaría más.

Llamar comentarios y formulario

Lo que haremos aquí será mandar a llamar nuestro template de comentarios, que contendrá la lista de los comentarios que nos hagan en esa entrada y el formulario para que puedan escribirlos. Además de poner el ancla que mandamos a llamar arriba en la parte donde mostramos el número de comentarios en la entrada, que le habíamos puesto gocommentForm.

PHP:
  1. <a name="gocommentForm" id="gocommentForm"></a><?php comments_template(); ?>

 

Terminar el loop

Al principio de esta página abrimos el loop de WordPress, es hora de cerrarlo

PHP:
  1. <?php endwhile; else: ?>
  2.   <p>Lo sentimos, no encontramos ningun post.</p>
  3.   <?php endif; ?>

 

También añadimos un else, por si no se encuentran post, mande un mensaje que pueden personalizar a su gusto.

Cerrar contenido

Para terminar con el single.php cerramos el contenido y mandamos a llamar nuestra sidebar y el footer

PHP:
  1. </div>
  2. <?php get_sidebar(); // mandamos llamar la sidebar ?>
  3. <?php get_footer(); // mandamos llamar el footer ?>

 

Páginas: 1 2 3 4 5 6 7 8 9

+

8 comentarios para Crear un theme para WordPress III

  1. Muy buen tutorial! Esta todo muy bien explicado. Queria hacer mi propio theme para WP desde hace tiempo pero todos los tutoriales que encontraba no terminaban de quedarme claros, pero este me esta ayudando muchisimo. Muchas gracias.

    Saludos

  2. Hola.

    Como siempre muy buena la explicacion. Ya lo tengo impreso para leerlo con calma. Por cierto, visitando el sitio stylecrunch vi un sistema de votos (ese con estrellas). Cuando nos ayudaras creando un tuto para esa tecnica?.

    Saludos.

  3. el maestro de WP!!!
    si señor bro me sigues sorprendiendo ^^!
    mil gracias :) :):)

  4. v4s1l1: muchas gracias, hace tiempo había puesto unos enlaces a tutoriales de como crear un theme para WP, pero me pareció bien crear un recurso más y al parecer está funcionando, comentarios como el tuyo que me hacen saber que se entiende son muy buenas referencias.

    Ed: También gracias por tu comentario y hacerme saber que está bien explicado, sobre el sistema de estrellas es un plugin llamado WP-PostRatings muy útil.

    Edén: Brother, un abrazo como siempre que gusto leerte… espero no dejar de hacerlo.

  5. Como va? uso el theme innofire y queria saber como hacer para cambiar la forma de los comentarios que trae por defecto a una en la que pueda comentar cualquiera sin registracion/loggeo y que le pida el nombre, mail, sitio y el comentario por supuesto.

    Y tal vez es mucho pedir pero se puede hacer que el espacio del comentario use el jquery de bbcode???

    Por ultimo queria preguntar si me puedo comunicar con vos, es que recien empiezo y tengo muchas dudas :p

  6. @fede777 Eso lo cambias en tu administrador, en la pestaña de Options » General en la pantalla verás la opción de “Users must be registered and logged in to comment” desactiva la casilla y listo.

    No entiendo el porqué usar jQuery en el bbCode si estamos usando el mismo que utiliza WordPress creo que la comptaibilidad es mucho mayor que si hacemos un relajo con jQuery, a menos que ya exista uno. xP Pero me quedo con el normal para no hacer mezclas de librerías.

  7. Muchas gracias por responder. Ya la pude sacar el loggeo, y puse un plugin wysiwyg para el campo de comentarios.

    Tambien agregue el plugin de share-it/compartelo pero al activarlo me queda la barra de search siempre abierta y no se como hacer para que funcione como antes.

  8. Promisaff 12 Oct 2007

    view

ShowTracksTrackbacks/Pings

  1. [...] serie de Tutoriales creados por InfectedFx que consta de 4 partes: I, II, III, [...]

  2. [...] pero el realizado por InfectedFX es el mejorcito; y se divide en 4 partes: Parte I, Parte II, Parte III yParte IV. En sus partes hablan de bastantes cosas muy interesantes que muchos no conocen del mundo [...]

  3. Blog and Web dice: 3

    Recursos para diseñar un tema para Wordpress…

    Diseñar un tema para Wordpress no demanda conocer css y html solamente, sino tener una noción sobre el funcionamiento de los temas, la estructura de archivos, los scripts globales, script externos, etc. Pero para ayudarnos en esta tarea ya existen un…

Agrega tu opinión Invitado, tu puedes registrarte o ingresar a tu cuenta .

No será publicado

Get your own Gravatar
Sign up for free