Advertisement
  1. Code
  2. WordPress

Construye una sección de publicaciones destacadas para WordPress

Scroll to top
Read Time: 13 min

() translation by (you can also view the original English article)

WordPress es impresionante. ¡Aún más sorprendente es el hecho de que se puede personalizar para potenciar cualquier tipo de sitio que te guste! Aquí, aprenderemos cómo crear una sección destacada y de "publicaciones más recientes", que es un "imprescindible" para todos los buenos temas de Noticias / Revistas. También repasaremos el uso de los 'Campos personalizados' a su máximo potencial.

Introducción

Este tutorial cubre el proceso de creación de la página de índice de una revista / tema de noticias para WordPress. Las principales características de esta página serán:

  • Publicaciones destacadas.
  • Últimas publicaciones.
  • Uso de variables de PHP para una fácil personalización de lo anterior para los usuarios de su tema que no están familiarizados con PHP / WordPress.
  • Recuperar una imagen de publicación de la sección "Campos personalizados" de una publicación.

Paso 1 - Preparación

Desde su directorio de instalación de WordPress, navegue por ‘wp-content / themes’ y cree una nueva carpeta. Dígalo como desee (estoy usando 'WordPress Times'). A continuación, crea 5 nuevos archivos:

  • index.php
  • header.php
  • footer.php
  • style.css

Este es el diseño básico que buscaremos:

Así que un documento de 940px, con dos secciones:
Contenido a 600px y barra lateral a 300px, dejando un margen de 40px entre los dos.

Paso 2 - Encabezado

Abra su archivo header.php e inserte lo siguiente:

1
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
<html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>>
3
<head>
4
  <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" />
5
	<meta name="description" content="<?php bloginfo('description'); ?>" />
6
	<meta name="keywords" content="<?php bloginfo('name'); ?>" />
7
	<meta name="author" content="<?php bloginfo('name'); ?>" />
8
	<meta name="generator" content="WordPress <?php bloginfo('version'); ?>" />
9
	<link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" media="screen, projection" />
10
	<link rel="alternate" type="application/rss+xml" title="<?php bloginfo('name'); ?> RSS Feed" href="<?php bloginfo('rss2_url'); ?>" />
11
	<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>" />
12
	<title><?php bloginfo('name'); ?> <?php wp_title('-'); ?></title>
13
    <?php wp_head(); ?>
14
</head>
15
<body>
16
<div class="container">
17
    	<h1 id="header"><?php bloginfo('name'); ?></h1>

Ejecutando esto, primero definimos el DOCType como XHTML 1.0 Transitional. En la sección de encabezado, luego establecemos todas las etiquetas meta, hojas de estilo y títulos de páginas para recuperar de WordPress; e incluimos nuestros 3 archivos de JavaScript.
Finalmente, abrimos una división de "contenedor" e insertamos el nombre de nuestro blog como título de encabezado.

Paso 3 - 'Noticias de última hora' Mensajes

Incluiremos un número de publicaciones definido por el usuario en la categoría "Noticias de última hora" en la parte superior de nuestra página. Abra index.php y escriba lo siguiente, no se preocupe, lo explicaré todo a continuación:

1
<?php get_header(); ?>
2
<div id="content">
3
4
<?php global $more;
5
$more = 0; ?>
6
7
<?php
8
9
/* ID of your 'Breaking News' Category */
10
$breaking_cat = "83"; 
11
12
/* How many posts from above category to display? Default = 3 */
13
$breaking_num = "3"; 
14
15
/* Number of recent posts to display under the Breaking News */
16
$latest_num = "4";
17
 
18
/* IDs of any cats you dont want to include in Recent posts.

19
Start each ID with a 'minus' symbol Seperate by a comma.

20
EG: $latest_ignore = "7,-6,-8,-1";

21
Posts from the 'Breaking' category are automatically excluded. */
22
$latest_ignore = "-1"; 
23
?>
24
25
	<!-- Show x Posts from Breaking News -->
26
	<?php query_posts('showposts='.$breaking_num.'&cat='.$breaking_cat.''); 
27
	  while (have_posts()) : the_post();
28
	?>
29
30
    <div class="breaking">
31
32
    	<img src="<?php echo get_post_meta($post->ID, 'thumbnail',true) ?>" alt="Post Image" class="postimg" />
33
    	<h2><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
34
    	<p class="datetime"><?php the_time('l, F j, Y G:i'); ?></p>
35
    	<?php the_content('Continue...'); ?>
36
    	<div class="postmeta">
37
            <p><?php the_category(', '); ?> - <a href="<?php the_permalink() ?>#commenting" title="View Comments">
38
	    <span class="comm"><?php comments_number('0 Comments','1 Comment','% Comments'); ?></span></a></p>
39
        </div><!--/postmeta-->
40
        
41
    </div><!--/breaking-->
42
43
    <?php endwhile; ?>

3.1 - Apertura

1
<?php get_header(); ?>
2
<div id="content">

La primera línea es una función simple de PHP de WordPress para incluir primero nuestro archivo header.php. Debajo de eso, abrimos nuestro div ‘Contenido’ para envolver todas las publicaciones juntas. He incluido un comentario HTML al cierre de cada etiqueta div que indica qué div se está cerrando. Le recomiendo que comience a hacer esto en sus propios proyectos si aún no lo ha hecho, ya que ayuda a mantener su código lo más organizado posible.

3.2 - La etiqueta $more

1
<?php global $more;
2
$more = 0; ?>

Este código nos permite incluir solo parte de cada publicación hasta donde el autor ha incluido la etiqueta <--more-->: esto impide que todo el texto de las publicaciones largas se muestre en la página de inicio.

3.3 - ID de categoría

1
$breaking_cat = "83"; 
2
$breaking_num = "3"; 
3
4
$latest_num = "4"; 
5
$latest_ignore = "-1";

Con el fin de facilitar la personalización del tema, incluimos cualquier opción aquí. Cada línea se comenta a más. Hacemos esto para que si otra persona usa su tema, en lugar de tener que rastrear todo su código para encontrar dónde colocar sus identificadores de categoría, todos sean fácilmente accesibles en la parte superior del archivo. A lo largo de este tutorial, usaremos estas variables en el bucle de WordPress.

3.4 - ¿Tenemos publicaciones?

1
<?php query_posts('showposts='.$breaking_num.'&cat='.$breaking_cat.''); 
2
  while (have_posts()) : the_post();
3
?>

Esta es una variación del bucle de WordPress que genera nuestras publicaciones de la base de datos. Como puede ver, estamos usando las dos primeras variables de la sección anterior. Las variables se sustituyen con la cadena asociada a ellas. Por ejemplo, utilizando el código predeterminado, la línea se convertirá automáticamente en:

1
query_posts('showposts=3&cat=83')

Luego, la segunda línea dice: si tenemos las publicaciones, insértelas en la página en el formato que se describe a continuación.

3.5 - Publicar contenido

1
<img src="<?php echo get_post_meta($post->ID, 'thumbnail',true) ?>" alt="Post Image" class="postimg" />
2
3
<h2><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h2>
4
5
<p class="datetime"><?php the_time('l, F j, Y G:i'); ?></p>
6
7
<?php the_content('Continue...'); ?>

Esto no es tan aterrador como parece, confía en mí.

  • Imagen: en la vista previa de nuestra página de inicio, verás que cada publicación tiene su propia imagen. Esto se incluye en la sección "Campos personalizados" de WordPress al escribir una publicación. Simplemente configure la "tecla" en miniatura y luego inserte el enlace a la imagen:

    El código básicamente dice "Toma los datos del campo personalizado de la publicación llamado‘ miniatura "y pégalos en una etiqueta img".

  • Título: Esto inserta el título de nuestra publicación como un enlace entre las etiquetas h2. the_permalink () obtiene el enlace de la publicación, y the_title () recupera el título. Bastante simple, ¿eh?
  • Fecha y hora: aquí obtenemos la hora en que se realizó la publicación, en el formato de: l, F j, YG: i, o en inglés: día, fecha, año (por ejemplo, sábado 2 de agosto de 2008 14: 27).
  • Contenido: recupera el contenido de la publicación hasta el (gracias al código que incluimos anteriormente). "Continuar ..." es el texto que se muestra al final de la publicación. Personaliza esto como quieras.

3.6 - Post Meta

1
<div class="postmeta">
2
3
<p><?php the_category(', '); ?> - <a href="<?php the_permalink() ?>#commenting" title="View Comments">
4
5
<span class="comm"><?php comments_number('0 Comments','1 Comment','% Comments'); ?></span></a></p>
6
7
</div>

Esto recupera la (s) categoría (es) de la cual es la publicación. Si hay más de uno, estarán separados por comas. Se recupera un enlace a la sección de comentarios y la cantidad de comentarios en el artículo.

1
</div> <!-- /breaking -->
2
<?php endwhile; ?>

Esto simplemente cierra el "div.breaking" en el que estaba nuestra publicación; y luego cierra el bucle una vez hecho.

Paso 4 - Últimas Publicaciones

Debajo de nuestras tres publicaciones de "Noticias de última hora", incluiremos un número especificado por el usuario de las últimas publicaciones, mientras ignoramos cualquier publicación de la categoría "Rompiendo", y cualquiera de las otras categorías especificadas por el usuario que ignoraremos. Agregaremos lo siguiente al final de nuestro código actual:

1
<!-- Show x Latest Posts -->
2
<?php query_posts('showposts='.$latest_num.'&cat=-'.$breaking_cat.','.$latest_ignore.''); ?>
3
<?php while (have_posts()) : the_post(); ?>
4
5
6
<div class="recent">
7
8
    <img src="<?php echo get_post_meta($post->ID, 'thumbnail',true) ?>" alt="Post Image" class="postimg-s" />
9
    <h3><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></h3>
10
    <p class="datetime"><?php the_time('l, F j, Y G:i'); ?></p>
11
    <div class="postmeta">
12
        <p><?php the_category(', '); ?> - <a href="<?php the_permalink() ?>#commenting" title="View Comments">
13
	<span class="comm"><?php comments_number('0 Comments','1 Comment','% Comments'); ?></span></a></p>
14
    </div>
15
16
</div>
17
18
19
<?php endwhile; ?>

4.1 - El Loop

  • showposts = '. $ latest_num.' - Le dice al bucle que solo muestre el número de publicaciones recientes que el usuario ha especificado en la variable ‘$ latest_num’.
  • cat = - '. $ breaking_cat.', '. $ latest_ignore.' - Esto le indica al bucle que ignore (observe el símbolo "menos" que requerimos que el usuario use en las variables) las publicaciones que se encuentran en la categoría "Rompiendo" para no duplicar ninguna publicación; y también para ignorar publicaciones de cualquiera de las categorías que el usuario especifica en la variable ‘$ latest_ignore’.

El resto se explica por sí mismo y es lo mismo que la función Noticias de última hora. Algunas diferencias son la falta de la sección de "contenido" de cada publicación, y también la imagen de la publicación recibe la clase de "postimg-s" en su lugar. Esto nos permitirá requerir solo una imagen en miniatura, que luego reduciremos el tamaño de nuestro CSS de 200x200 a 50x50.

4.2 - Cerrar la página

Para finalizar la página actual, necesitamos cerrar el contenido div # e incluir nuestro pie de página:

1
</div><!--/content-->
2
<?php get_footer(); ?>

4.3 - Footer.php

En este archivo, simplemente cierre las etiquetas #contenedor, cuerpo y html:

1
</div><!--/container-->
2
</body>
3
</html>

Paso 5 - Estilo CSS

En este momento, si has creado algunas publicaciones, tu diseño debería tener este aspecto:

Bastante feo, eh? Bueno, no por mucho tiempo.

5.1 - Necesidades

Abre tu archivo style.css y pégalo en el siguiente código:

1
/*------------------------------------------------------------------------

2
Theme Name:    WordPress Times

3
Theme URI:     http://www.vivawp.com/

4
Description:   A tutorial for NETTUTS.com by Dan Harper

5
Version:       1.00

6
Author:        Dan Harper

7
Author URI:    http://danharper.me

8
------------------------------------------------------------------------*/

Esto se requiere en la parte superior de este archivo, ya que le brinda al Administrador de temas en WordPress cierta información sobre su tema. Rellena las secciones que desees.

5.2 - Estilo

A continuación se muestra todo el código CSS utilizado para diseñar el documento. Está documentado a continuación.

1
* {margin:0;padding:0;}
2
3
body {
4
background-color: #faf9f5;

5
color: #3d3d3d;

6
font-size:75%;
7
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
8
}
9
10
#container {

11
width: 940px;
12
margin: 15px auto;
13
}
14
15
h1, h2, h3, h4, h5, h6 {
16
font-family: Georgia, "Times New Roman", Times, serif;
17
}
18
19
/* BLUEPRINT CSS TYPOGRAPHY */
20
h1, h2, h3, h4, h5, h6 {font-weight:normal;color:#111;}

21
h1 {font-size:3em;line-height:1;margin-bottom:0.5em;}
22
h2 {font-size:2em;margin-bottom:0.75em;}
23
h3 {font-size:1.5em;line-height:1;margin-bottom:1em;}
24
h4 {font-size:1.2em;line-height:1.25;margin-bottom:1.25em;height:1.25em;}
25
h5 {font-size:1em;font-weight:bold;margin-bottom:1.5em;}
26
h6 {font-size:1em;font-weight:bold;}
27
h1 img, h2 img, h3 img, h4 img, h5 img, h6 img {margin:0;}
28
p {margin:0 0 1.5em;}
29
li ul, li ol {margin:0 1.5em;}
30
ul, ol {margin:0 1.5em 1.5em 1.5em;}
31
/* /BLUEPRINT CSS TYPOGRAPHY */
32
33
h1#header {

34
margin-bottom: 20px;
35
}
36
37
#content {

38
width: 600px;
39
float: left;
40
}
41
42
.breaking, .recent {
43
padding: 10px;
44
border: 1px solid #3d3d3d;

45
margin-bottom: 15px;
46
}
47
48
.postimg {
49
float: right;
50
width: 200px;
51
height: 200px;
52
padding-bottom: 10px;
53
}
54
55
.postimg-s {
56
float: right;
57
width: 50px;
58
height: 50px;
59
padding-bottom: 10px;
60
}
61
62
.breaking h2 {
63
font-size: 2.5em;
64
line-height: 1em;
65
margin-bottom: 0px;
66
}
67
68
    .breaking h2 a, .recent h3 a {
69
    text-decoration: none;
70
    color: #3d3d3d;

71
    }
72
    
73
    .breaking h2 a:hover, .recent h3 a:hover {
74
    text-decoration: underline;
75
    }
76
77
p.datetime {
78
font-style: italic;
79
font-size: 0.9em;
80
}
81
82
/* POST META */
83
.postmeta {
84
margin: -10px;
85
padding: 4px;
86
background-color: #dedbd1;

87
clear: both;
88
}
89
90
    .postmeta p {
91
    margin: 0;
92
    padding-left: 6px;
93
    text-transform: uppercase;
94
    font-weight: bold;
95
    }
96
    
97
    .postmeta span.comm {
98
    font-weight: normal;
99
    }
100
    
101
    .postmeta a:link, .postmeta a:visited {
102
    color: #3d3d3d;

103
    text-decoration: none;
104
    }
105
    
106
    .postmeta a:hover, .postmeta a:active {
107
    text-decoration: underline;
108
    }
109
110
#sidebar {

111
width: 300px;
112
margin-left: 620px;
113
}

5.3 - Examinar el CSS

  • * - Elimina márgenes no deseados y rellenos de todos los elementos que los navegadores se insertan.
  • cuerpo - Diseño de página básico de colores y fuentes.
  • #container - Establece el ancho de la página a 940px. Margen de 15px en la parte superior e inferior, y lo centra en la ventana.
  • h1, h2, h3, h4, h5, h6 - Encabezando fuentes a Georgia, Times New Roman, Times o cualquier fuente serif.
  • Entre las etiquetas de comentarios de Blueprint: estilo tipográfico básico de Blueprint CSS Framework. Ahorra un montón de problemas al hacer que el texto se vea bien.
  • h1 # header: agrega un poco de separación del nombre del blog y del resto del documento.
  • #contenido: todo nuestro contenido está envuelto en 600px a la izquierda. El espacio restante se puede utilizar como una barra lateral.
  • .breaking, .recent - Incluye las publicaciones de última hora y de última hora en una caja con un relleno de 10px. Brecha de 15px entre cada una.
  • .postimg - Formatea la imagen de la publicación para romper artículos. Tamaño de imagen limitado a 200px y flotado a la derecha.
  • .postimg-s - Igual que el anterior, pero para los últimos artículos y la imagen se redimensiona a 50px.
  • .breaking h2 - Hace que el título de Rompiendo artículos sea más pequeño, sin margen inferior.
  • .breaking h2 a, .recent h3 a - Estilo básico para títulos de artículos, ocultando el estilo de enlace predeterminado.
  • .breaking h2 a: hover, .recent h3 a: hover - Agrega un subrayado al enlace del título cuando se desplaza sobre este para mostrarle al usuario que es en realidad un enlace.
  • p.datetime: cadena de fecha y hora para artículos ligeramente más pequeños y en cursiva.
  • .postmeta: crea un cuadro para incluir los detalles del Meta del post (categorías y comentarios). el margen -10px asegura que llena la totalidad de la casilla de mensajes.
  • .postmeta p - El texto en postmeta div se hace en mayúsculas y en negrita.
  • .postmeta span.comm: elimina el estilo en negrita del texto "x Comentarios".
  • .postmeta a - Estilo de enlace para eliminar el color predeterminado del enlace.
  • .postmeta a: hover - Agrega subrayado a los enlaces en el hover.
  • #sidebar: crea un área para una barra lateral en el lado derecho de la página.

La página ahora se verá así. ¡Mucho más limpio!

Conclusión

Felicidades Ha creado con éxito los conceptos básicos de la página principal de un tema de noticias para WordPress, completo con un área de publicación destacada, un elemento imprescindible cuando se trata de temas de noticias. También puede adelantarse a la competencia con sus sencillas opciones de personalización utilizando las variables de PHP.

Esté atento al lanzamiento de vivaWP, una nueva familia de temas Premium WordPress que se lanzará a mediados de agosto. Nuestro primer tema, CocoaNews, comparte algunos de los códigos básicos que se muestran en este tutorial.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.