WP desde cero (5): Funciones del loop I

En esta entrada veremos algunas funciones que se pueden usar en el loop, como the_title(), the_content() y the excerpt().

Roy Lichtenstein

archivado en: WordPress / 2 diciembre, 2012 / taller:

Seguimos con el tutorial de WordPress desde cero. En esta entrada conoceremos las funciones más importantes que podemos usar en el loop.

1. the_title() / get_the_title();

Esta función recupera el título de una entrada. Es decir, si escribimos the_title() se escribe de forma automática el titular de un post. Su sintaxis es:

<?php the_title( [$before], [$after] ); ?>

Los parámetros $before y $after son opcionales y por eso están escritos con corchetes. Permiten especificar qué etiquetas HTML irán antes y después del título. Por ejemplo, esto:

  • <?php the_title('<h3>', '</h3>'); ?>

devolvería:

  • <h3>Título del post</h3>

De todas maneras, os aconsejo no usar nunca la función de esta manera, sino en su forma más simple —the_title()—, ya que es mucho más limpio separar el código PHP/WP del código HTML.

Casi todas las funciones del bucle tienen una variante que permite recuperar el contenido para ser trabajado en PHP. Por lo general, anteponiendo la expresión get_, que en inglés significa «coger».

Es decir, get_the_title() no devolvería nada en pantalla a no ser que lo forzáramos con un echo, que es una utilidad de PHP para imprimir en pantalla algo.

Expresado de otra forma. Esto:

  • <?php the_title(); ?>

Equivale a esto:

  • <?php echo get_the_title(); ?>

¿Para qué nos puede servir entonces get_the_title()? Pues para trabajar con la cadena de texto del titular antes de convertirla en HTML. Por ejemplo, mediante la función substr() de PHP podemos cortar los titulares demasiado extensos, que superen los 50 caracteres, y luego ya sí mostrarlos en pantalla con tres puntos al final que denoten que no está completo.

  • <?php $titular=get_the_title();
  • $caracteres_titular=strlen($titular);
  • if ($caracteres_titular > 50) {
  • $titular = substr($titular, 0, 50)."&hellip;";
  • } ?>
  • <?php echo $titular; ?>

2. the_content() / get_the_content();

Con esta función recuperamos el contenido de un post. Como en el caso anterior, para usar el contenido en bruto, hay que emplear la alternativa get_the_content(), que devuelve la cadena limpia (sin filtros).

  • <?php the_content( ); ?>

Esta función no tiene mayor dificultad, pero contaré una variante, aunque ya no se usa  casi nunca para reconocerla si alguna vez nos la encontramos cuando adaptemos un tema.

Ya sea escribiéndolo a mano, ya sea pulsando el botón more del panel de escritura en versión HTML, los usuarios pueden indicar hasta dónde quieren que se muestre un texto cuando, en la portada, aparece solo el fragmento inicial mediante la palabra reservada <!--more-->.

[singlepic id=32 w=535 h=261 float=center]

Luego esa entrada se verá justo hasta ahí seguida del enlace «leer más» o« read more» o similar. Para modificar esta última expresión, se puede indicar como argumento en the_content().

  •  <?php the_content('leer m&aacute;s') ; ?>

Sin embargo, como decía es que casi no se usa, pues lo habitual es emplear los sumarios, que son muchos más cómodos.

3. the_permalink() / get_permalink( $id );

Devuelve el enlace permanente de la entrada.

  • <?php the_permalink( ); ?>

Se utiliza para para indicar la url en los enlaces  a las entradas individuales cuando están en un listado (en la portada, en el archivo...). Por ejemplo, por usabilidad, es frecuente que los titulares de los post de la portada enlacen a su respectiva entrada.

  • <?php while (have_posts()) : the_post(); ?> <!-- principio del loop -->
  • <h3><a href="<?php the_permalink( ); ?>"> <?php the_title() ; ?> </a></h3>
  • <?php endwhile; ?> <!-- final del loop -->

4. the_excerpt() / get_the_excerpt();

Con esta función recuperamos el extracto (el sumario) de una entrada.

  • <?php the_excerpt(); ?>

Si no se ha puesto nada en el campo Extracto del panel de escritura, WordPress selecciona automáticamente las primeras 55 palabras del post. Para cambiar este parámetro hay que añadir un filtro, que ya veremos qué son, en el archivo functions.php.

  • function custom_excerpt_length( $length ) {
  • return 20;
  • }
  • add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );

Sin embargo, yo prefiero hacerlo de otra manera, ya que no siempre interesa que se corte el sumario o que sea siempre por el mismo número de palabras. Por ejemplo, en este blog sí que corto los sumarios de la portada cuando sobrepasan los 160 caracteres, pero en las entradas individuales los dejo enteros aunque tengan más caracteres.

Para eso, utilizo get_the_excerpt() en vez de the_excerpt(). Almaceno el valor en una variable, lo cuento mediante la función strlen() de PHP y si son más de 160 caracteres, los quito con substr() y dejo tres punticos, aunque también se podría añadir un «leer más» que fuera un enlace con the_permalink()... En síntesis, que de esta manera se controla mejor el proceso.

  • <p class="capsula_sumario"><?php
  • $sumario = get_the_excerpt();
  • $caracteres_sumario=strlen($sumario);
  • if ($caracteres_sumario > 160) {
  • $sumario = substr($sumario, 0, 160)."&hellip;";
  • } ?>
  • <?php echo $sumario ?></p>

Bueno, pues de momento ya tenemos un par de funciones que podemos incluir en el loop de index.php. En este caso, vamos a escoger solo el sumario, sin añadirle nada, para hacer más adelante una portada tipo magazine (como la de este blog). Así, de momento nuestro loop podría ser algo así:

  • <div id="primary">
  • <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
  • <article>
  • <h3><a href="<?php the_permalink( ); ?>"> <?php the_title() ; ?> </a></h3>
  • <?php the_excerpt() ; ?>
  • </article>
  • <?php endwhile; else: ?>
  • <p> <?php _e('Sin entradadas', 'mmfilesi-bones'); ?> </p>
  • <?php endif; ?>
  • </div> <!-- #primary -->

En la próxima entrada veremos más funciones que podemos añadir al loop; pero por hoy vamos a dejarlo aquí.

Abrazos++;

|| Tags:

valoración de los lectores sobre WP desde cero (5): Funciones del loop I

  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración positiva
  • estrellica valoración negativa
  • 4.3 sobre 5 (12 votos)

¿Te ha parecido útil o interesante esta entrada?
dormido, valoración 1 nadapensativo, valoración 2 un poco sonrisa, valoración 3 a medias guiño, valoración 4 bastante aplauso, valoración 5 mucho

Tú opinión es muy importante, gracias por compartirla!

2 respuestas a “WP desde cero (5): Funciones del loop I