Tutorial de tema de WordPress para principiantes – Parte 5: Acceder a la información de la publicación
Esta lección del tutorial del tema de WordPress para principiantes tratará sobre cómo podemos acceder y generar información como su enlace, título y más de cada publicación cuando se encuentra dentro del ciclo de publicación. Hacemos esto con etiquetas de plantilla. En el proceso, también agregaremos las plantillas de vista única a nuestro tema.
En el paso anterior, agregamos el post loop que incluye la the_post()función. Esta función configura variables globales y se asegura de que podamos usar llamadas de función simples e intuitivas, llamadas etiquetas de plantilla, mientras estamos dentro del whilebucle.
Etiquetas de plantilla más comunes para usar en el ciclo de publicación
Esta es una lista de las etiquetas de plantilla más comunes que le gustaría usar para acceder a la información de una publicación:
the_title()hace eco del título de la publicación.the_permalink()genera el enlace permanente/URL de la publicación.the_content()genera el contenido de la publicación (del editor)the_excerpt()hace eco del extracto de la publicación. Si el campo de extracto está vacío, se repetirán las primeras 55 palabras del contenido de la publicación junto con "…"the_ID()genera el ID de la publicación.the_category()hace eco de todas las categorías asociadas.the_tags()genera todas las etiquetas asociadas.the_date()hace eco de la fecha de publicación de la publicación.the_time()genera la hora de publicación de la publicación.the_author()hace eco del nombre para mostrar del autor de la publicaciónthe_post_thumbnail()genera la imagen destacada de la publicación. Aprenderemos cómo agregar soporte para miniaturas destacadas más adelante en este tutorial.
Hay muchos más. Si está interesado, eche un vistazo a la documentación de WordPress Codex de todas las etiquetas de publicación. Eche un vistazo fuera del encabezado "etiquetas de publicación" también para obtener más información: están un poco dispersas en esta página.
Empecemos a implementar algunas de estas etiquetas en nuestro index.php. También agregaré algo de HTML muy básico solo para formatear mejor la salida. ¡Te animo a que agregues tu propio HTML! Agregue divs, spans, secciones, encabezados, etc. con las clases que desee.
Desarrollando el bucle en index.php
Dentro del ciclo en nuestro index.phpme gustaría agregar un enlace que vaya al enlace permanente de la publicación. Dentro del enlace me gustaría hacer eco del título de la publicación. Luego también me gustaría hacer eco del extracto de la publicación y sus categorías.
<?php get_header(); ?>
<?php
if (have_posts()) {
while (have_posts()): the_post();
<article <?php post_class(); ?>>
<h2>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
</h2>
<?php the_excerpt(); ?>
<?php the_category(); ?>
</article>
endwhile;
the_posts_pagination();
} else {
?><p>No posts, sorry.</p><?php
}
?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
Lo que hace el código anterior es;
- La línea #5 agrega la
<article>etiqueta HTML con una llamadapost_class()que genera clases de publicación útiles, tal comobody_class()lo usamos en un paso anterior. - En la línea #6-8 agregamos una
<h2>etiqueta para el título, con un enlace que va al enlace permanente de la publicación (vista única). - La línea #9 hace eco del extracto de la publicación.
- Y en la línea #10 hacemos eco de las categorías de la publicación. Debido a que no paso ningún argumento a esta llamada, el valor predeterminado es una
<ul>lista.
Esto da como resultado el siguiente resultado al actualizar la página principal:
¡Estamos llegando a alguna parte! Le animo a que consulte la documentación de cada función de etiqueta para los parámetros que aceptan. ¡Puedes modificar bastante la salida! Y decida usted mismo qué etiquetas de plantilla usar.
Intenta hacer clic en el enlace de una publicación y verás que llegas a esa única página de publicación. Ahora puede ver que el ciclo solo muestra esa publicación. Sin embargo, debido a que actualmente solo tenemos una plantilla, index.phpsu vista única también usa esta plantilla. Así que la vista única no tiene mucho sentido. ¡No necesitamos que se vincule a sí mismo, y queremos ver el contenido completo de la publicación! Arreglemos esto creando nuestra segunda plantilla en nuestro tema.
Creación de plantillas de vista única
Si recuerdas en la lección 1 del tutorial de temas de WordPress para principiantes, vimos la jerarquía de plantillas. Cuando estamos en una sola publicación o página, WordPress busca single.phppublicaciones y page.phppáginas. Si no se encuentra uno de estos, WordPress recurre al singular.phpque se comparte independientemente del tipo de publicación. Sin embargo, los temas generalmente se implementan debido single.phpa page.phplas diferencias entre publicaciones y páginas. Las páginas no tienen categorías ni etiquetas, y dado que las páginas generalmente se usan para contenido estático, normalmente no muestran la fecha de publicación ni los comentarios. Sin embargo, esto depende completamente de usted.
Crearemos single.phpy page.phppara nuestro tema. Comencemos con las publicaciones primero.
Plantilla de publicación única
En la carpeta de su tema, haga una copia index.phpy cámbiele el nombre a single.php. En single.phpeliminaremos el enlace permanente (que se vincula a sí mismo) e intercambiaremos el extracto con el contenido completo de la publicación. Y finalmente no necesitamos navegación de archivo aquí.
<?php get_header(); ?>
<?php
if (have_posts()) {
while (have_posts()): the_post();
<article <?php post_class(); ?>>
<h2><php the_title(); ?></h2>
<?php the_content(); ?>
<?php the_category(); ?>
</article>
endwhile;
} else {
?><p>No posts, sorry.</p><?php
}
?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
Agreguemos más información útil; como la fecha de la publicación y el nombre del autor. Nuevamente, lo animo a agregar etiquetas HTML para crear una estructura HTML mucho más agradable.
<?php get_header(); ?>
<?php
if (have_posts()) {
while (have_posts()): the_post();
<article <?php post_class(); ?>>
<h2><php the_title(); ?></h2>
<?php the_content(); ?>
<?php the_category(); ?>
<p>Posted: <?php the_date(); ?> at <?php the_time(); ?></p>
<p>Author: <?php the_author(); ?></p>
</article>
endwhile;
} else {
?><p>No posts, sorry.</p><?php
}
?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
Las funciones the_time()y the_date()mostrarán la fecha y la hora en el formato que haya definido en el panel de administración > Configuración. Sin embargo, puede anular esto proporcionando un formato de fecha diferente como parámetro para estos métodos.
La función the_author()repite el "nombre para mostrar" del autor. Si el usuario no ha proporcionado ningún otro nombre en su perfil, se repetirá el nombre de usuario.
Le recomiendo encarecidamente que nunca imprima los nombres de usuario, ya que esto puede representar una amenaza para la seguridad. Siempre asegúrese de que los autores hayan proporcionado un nombre propio, o no use the_author().
Así me queda una sola publicación ahora. ¡Impresionante! Hagamos la plantilla de una sola página.
Plantilla de una sola página
Haz una copia de tu single.phpy cámbiale el nombre a page.php. Todo lo que hice page.phpfue eliminar todo lo que no estaba relacionado con las páginas. Hacer eco de las categorías de las páginas no funcionará, y también eliminé la fecha, la hora y el autor. Esto es lo que obtenemos en page.php:
<?php get_header(); ?>
<?php
if (have_posts()) {
while (have_posts()): the_post();
<article <?php post_class(); ?>>
<h2><php the_title(); ?></h2>
<?php the_content(); ?>
</article>
endwhile;
} else {
?><p>No posts, sorry.</p><?php
}
?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>
¡Finalmente estamos comenzando a llegar a alguna parte con nuestras plantillas! Sin embargo, no puedo repetir esto lo suficiente; Os animo a modificar las plantillas y los parámetros a las funciones a vuestro gusto. Especialmente agregando más contenedores HTML para que sea más fácil diseñarlo más tarde.
En el siguiente paso, nos alejamos un poco de las plantillas y profundizamos en la codificación de back-end de los temas de WordPress.

