Leer más o Artículo completo

Reading time aprox: 4 minutes, 2 seconds

Leer Más o Artículo completo

En la mayoría de los casos, es el estilo del tema elegido, el que marca cómo aparecen los «excerpt» (extractos) en las páginas principales.

Tanto la longitud del extracto como la indicación de «Leer más…» o, «Continúa leyendo…» o, cualquier expresión parecida, las determina el tema.

Ya conté cómo podemos fácilmente cambiar la longitud del extracto, en Cómo cambiar la longitud del extracto en WordPress.

Ahora te contaré cómo cambiar la frase indicativa «Leer más…».

Leer Más o Artículo completo

Un comportamiento quizá poco conocido y que es de fácil adopción, es el <!–noteaser–>.

Nuevamente, esto es aplicable sólo a los que usan el editor clásico, ya que el editor de bloques no admite esta fórmula.

El caso es que al escribir esta etiqueta justo después de la etiqueta de ruptura del extracto, se consigue que la parte anterior a la etiqueta, no aparezca en el artículo.

A ver si me explico, lo mejor es verlo con ejemplos.

En el editor, escribo el siguiente cuerpo de artículo:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enimad minim veniam, <!–more–>quis nostrud exercitation ullamco laboris nisi utaliquip ex ea commodo consequat.

En la página principal o la de resúmenes de artículos, aparecerá el Título y el extracto, que será la parte primera del artículo hasta encontrar la etiqueta <!–more–> y, cuando vea el artículo, tras hacer clic en Ver más, veré el artículo desde el principio y hasta el final, sin que exista división alguna.

En otro caso, escribo el siguiente cuerpo de artículo:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed doeiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enimad minim veniam, <!–more–><!–noteaser–>quis nostrud exercitation ullamco laboris nisi utaliquip ex ea commodo consequat.

En la página principal o la de resúmenes de artículos, aparecerá igualmente el título y el extracto, que será la parte primera del artículo hasta encontrar la etiqueta <!–more–> y, cuando vea el artículo, tras hacer clic en Var más, veré el título y el artículo empezando a partir del texto después de la etiqueta <!–noteaser–>.

Si se desea alterar este comportamiento, lo que considero totalmente innecesario, ya que con no usar la etiqueta <!–noteaser–>, ya vale, lo puedes hacer con una línea de código en tu archivo functions.php.

Es tan sencillo como decirle al core que no use el teaser, lo que se consigue poniendo el valor true a una variable que por defecto tiene el valor false.

La forma de hacer esto es:

the_content( '', TRUE );

Pero claro, como decía esto no tiene sentido, así que vamos a ver qué más se puede hacer.

Especificando la leyenda

La función de contenido, the_content() tiene dos parámetros:

the_content( $more_link_text , $strip_teaser );

El primer parámetro es el texto que queremos que aparezca después del extracto, el usual de «Leer más» o, «Continua leyendo» o, el que nos guste.

Para probar, podemos incluir en el archivo functions.php, la línea:

the_content( "Seguir leyendo", FALSE );

Incluso, más simple:

the_content( "Seguir leyendo");

Deshabilitando el scroll

Por lo general, cuando se hace clic sobre el texto que se ha elegido para el final del extracto, aparecerá la página completa con el artículo elegido y, automáticamente el navegador hará un scroll o desplazamiento hasta el lugar de texto justo después de la etiqueta <!–more–> (donde silenciosamente WordPress ha colocado el ancla «#more-000») y este comportamiento, como no, también es alterable.

Como sabemos cual es la fórmula que usa WordPress para el nombre del ancla, podemos construir una sencilla función que elimine ese elemento, una sencilla expresión regular, hará el trabajo:

add_filter( 'the_content_more_link', 'remove_more_link_scroll' );
function remove_more_link_scroll( $link ) {
    $link = preg_replace( '|#more-[0-9]+|', '', $link );
    return $link;
}

Modificando el enlace de «Leer más»

La forma correcta de hacer modificaciones en WordPress, es siempre usando los ganchos (hooks) y las funciones internas, así que vemos a continuación cómo debe hacerse el cambio del enlace al final de los extractos:

function modifica_read_more() {
    return '<a class="more-link" href="' . get_permalink() . '">Aquí el texto que quieras</a>';
}
add_filter( 'the_content_more_link', 'modifica_read_more' );

De esta forma mantenemos la integridad de WordPress. 😉

El cambio total

Hay ocasiones en las que no nos acordamos de poner la etiqueta <!–more–> en su correspondiente lugar del texto.

Esto lleva a dos consecuencias:

  1. El extracto será el que aparezca al principio del texto, con una longitud en palabras igual a lo que hemos fijado, que por defecto son 50 palabras.
  2. El texto que aparece a continuación del extracto, puede ser distinto del esperado, ya que aparece invocado por una función distinta (la de extractos por defecto).

Para solucionar este detalle incómodo, escribimos una sencilla función que incluimos en el archivo functions.php.

Modificamos el comportamiento del filtro.

// Cambiar el texto "Read More" del extracto
function new_excerpt_more($more) {
       global $post;
    return '<a class="moretag" href="'. get_permalink($post->ID) . '"> Leer el artículo completo …</a>';
}
add_filter('excerpt_more', 'new_excerpt_more');

¡Atención! Ten en cuenta que si el tema padre ya ha modificado el comportamiento del filtro «excerpt», esta función en el tema hijo, no funcionará.

Para hacer eso, deberás escribir antes una llamada a la función remove_filter() para borrar el filtro en el tema padre. El problema es que tu archivo functions.php se carga antes de las funciones parent.php del padre, por lo que en el momento de la ejecución de tu archivo, todavía no hay un filtro para eliminar, y tu código remove_filter() fallará sin previo aviso.

La clave es poner tu código remove_filter() en una función que se ejecuta desde un enlace de acción que se activa después de cargar el tema principal. El siguiente código es un ejemplo del código adicional necesario para que el código anterior funcione desde un tema secundario del tema principal TwentyTwenty.

Deberás examinar el código de tu tema principal real para ver los parámetros correctos en el código remove_filter(), deben coincidir exactamente con los parámetros add_filter() utilizados por el tema padre.

function child_theme_setup() { 
    // suplanta el texto «más» de los extractos
    remove_filter( 'excerpt_more', 'twentytwenty_auto_excerpt_more' );
    remove_filter( 'get_the_excerpt', 'twentytwenty_custom_excerpt_more' );
}
add_action( 'after_setup_theme', 'child_theme_setup' );

Pincelada adicional

Si lo tuyo es el cambio, quizá te interesa hacer que en cada artículo aparezca un texto diferente. Eso lo consigues muy fácilmente, sólo has de acordarte de incluir en el texto, una etiqueta <!–more–> en el sitio que elijas, pero…

Puedes personalizar tu texto, simplemente añadiendo a la etiqueta el texto que desees. Es decir, puedes poner en el texto del artículo: <!–more Sigue leyendo –> o quizá <!–more Espera, aún hay más –>. ¡La imaginación al poder!


¡Gracias por leernos!


¡Tus comentarios y preguntas nos ayudan a mejorar, por favor comenta!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

seis − tres =

Para ofrecer las mejores experiencias, utilizamos tecnologías como las cookies para almacenar y/o acceder a la información del dispositivo. El consentimiento de estas tecnologías nos permitirá procesar datos como el comportamiento de navegación o las identificaciones únicas en este sitio. No consentir o retirar el consentimiento, puede afectar negativamente a ciertas características y funciones.    Más información
Privacidad