Eliminar el enlace "Continuar leyendo" solo del extracto de avance

25 ene 2013, 23:11:37
Vistas: 18K
Votos: 6

Quiero eliminar el enlace "Continuar leyendo" solo del extracto de avance (teaser) y no del extracto automático, para el cual ya existe un filtro disponible.

Este es el código original; proviene de la plantilla de página Showcase Template:

    <?php while ( have_posts() ) : the_post(); ?>

<?php
    if ( '' != get_the_content() )
        get_template_part( 'content', 'intro' );
?>

<?php endwhile; ?>

Aquí está el contenido de Intro:

<div class="entry-content">
    <?php the_content(); ?>
    <?php wp_link_pages( array( 'before' => '<div class="page-link"><span>' . __( 'Páginas:', 'mytheme' ) . '</span>', 'after' => '</div>' ) ); ?>
    <?php edit_post_link( __( 'Editar', 'mytheme' ), '<span class="edit-link">', '</span>' ); ?>
</div><!-- .entry-content -->

-->

1
Comentarios

Necesitamos ver todo tu código, ¿podrías publicar el contenido de content-intro.php? Quizás quieras buscar qué hace get_template_part =p

Tom J Nowell Tom J Nowell
26 ene 2013 01:07:07
Todas las respuestas a la pregunta 5
1

Cambiar el texto estándar para todos los extractos:

function custom_excerpt_more($more) {
   global $post;
   $more_text = '...';
   return '… <a href="'. get_permalink($post->ID) . '">' . $more_text . '</a>';
}
add_filter('excerpt_more', 'custom_excerpt_more');

Crear tu propia función de extracto:

// Función de Extracto por Rafael Marques ;)
function rm_excerpt($limit = null, $separator = null) {

    // Establecer límite de palabras estándar
    if (is_null($limit)){
        $excerpt = explode(' ', get_the_excerpt(), '15');
    } else {
        $excerpt = explode(' ', get_the_excerpt(), $limit);
    }

    // Establecer separador estándar
    if (is_null($separator)){
        $separator = '...';
    }

    // Generador de Extracto
    if (count($excerpt)>=$limit) {
        array_pop($excerpt);
        $excerpt = implode(" ",$excerpt).$separator;
    } else {
        $excerpt = implode(" ",$excerpt);
    }   
    $excerpt = preg_replace('`\[[^\]]*\]`','',$excerpt);
    echo $excerpt;
}

Usar <?php rm_excerpt(); ?> cuando quieras mostrar un extracto personalizado. El primer valor establece el límite de palabras y el segundo el separador. Ejemplo: <?php rm_excerpt(10,' (...)'); ?>. Para crear un enlace separado "leer más", inserta <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">¿Leer más?</a>

25 ene 2013 23:50:31
Comentarios

Vale, entonces ¿no hay un filtro específico que modifique solo el teaser?

Marcus Marcus
26 ene 2013 00:01:49
0
add_filter( 'the_content_more_link', 'wpsites_read_more_link' );
function wpsites_read_more_link() {
return '<a class="more-link" href="' . get_permalink() . '"></a>';
}

Añade esto a tu archivo functions.php y eliminará el enlace "Leer más".

http://codex.wordpress.org/Customizing_the_Read_More

30 jun 2014 07:21:26
12

Parece que deseas eliminar el texto "Continuar leyendo" del the_content(). Si es así, este ejemplo del Codex sería lo que necesitas:

Técnicas de Leer Más

Los parámetros dentro de la etiqueta de plantilla the_content() son los siguientes:

<?php the_content( $more_link_text , $strip_teaser ); ?>

$more_link_text establece el texto del enlace como "Leer más". El segundo, $strip_teaser, define si el enlace "más" debe estar oculto (TRUE) o mostrado (FALSE). Por defecto es FALSE, lo que muestra el texto del enlace.

Para eliminar el avance:

Cambia the_content(); en tu index.php por (es decir, el segundo parámetro controla esto):

`the_content('',TRUE,'')`

Incluye <!--noteaser--> en el texto de la entrada, justo después de <!--more-->.

ACTUALIZACIÓN
Según tu código, parece que has añadido el código en el lugar incorrecto. Sin ver tus archivos, probablemente necesites ir a content.php y buscar the_content() para realizar el cambio allí. Lo verifiqué en uno de mis temas que usa plantillas y funciona bien. También deberías leer más sobre plantillas para entender cómo funcionan. En resumen:

1 - Elimina este texto de tu código: if ( '' != get_the_content('',TRUE,'') )
2 - Ve a content.php en tu tema y encuentra the_content() y cámbialo a the_content('',TRUE,'')
3 - Añade <!--noteaser--> como se indicó anteriormente

Esto es si estás usando <!--more--> para configurar manualmente los extractos.

26 ene 2013 00:00:09
Comentarios

Hola chowwy -- Vi eso y asumí que elimina el avance por completo en lugar de solo eliminar el enlace "Continuar leyendo". ¿No es correcto?

Marcus Marcus
26 ene 2013 00:04:27

Parece que $strip_teaser indica si el enlace "más" debe ocultarse/mostrarse. No indica que el extracto en sí sea eliminado.

chowwy chowwy
26 ene 2013 00:05:46

chowwy -- no funciona. Fíjate que dice poner la etiqueta <!--noteaser--> después de la etiqueta more, lo cual no aplica a extractos teaser porque no tienen etiquetas more. ¿Tiene sentido? Intenté insertar <!--noteaser--> en el editor de todos modos y no obtuve nada.

Marcus Marcus
26 ene 2013 00:17:59

Marcus, ¿tienes algún código que podamos ver? ¿Está esto en el loop como the_content() o estás usando the_excerpt() en otro lugar?

chowwy chowwy
26 ene 2013 00:21:03

Acabo de incluirlo en la pregunta

Marcus Marcus
26 ene 2013 00:30:29

Marcus, he actualizado mi respuesta.

chowwy chowwy
26 ene 2013 01:24:27

Para que quede claro, ¿cómo puedes insertar <!--noteaser--> en el campo de extracto manual después de la etiqueta <!--more--> cuando el campo de extracto manual no usa la etiqueta <!--more--> por defecto? No creo que estemos hablando de lo mismo.

Marcus Marcus
26 ene 2013 01:45:56

Cuando digo extracto manual, significa que estás decidiendo dónde cortar el texto dentro del editor de publicaciones, no usando el campo de extracto separado. Si estás usando el campo de extracto, esta pregunta/respuesta podría ser útil - http://wordpress.stackexchange.com/questions/26837/how-to-remove-read-on-content-in-the-excerpt

chowwy chowwy
26 ene 2013 01:53:26

Por eso usé la palabra "teaser" (avance), porque a veces WP confunde el "extracto manual" con el "extracto teaser", como puedes ver link donde distingue entre el teaser y el extracto manual: "El extracto manual de WordPress a menudo se confunde con el extracto automático o con el teaser (la parte de una publicación que aparece en la página principal cuando usas la etiqueta More). Aunque ambos están relacionados con el extracto manual, son diferentes de él."

Marcus Marcus
26 ene 2013 02:04:08

Marcus, el artículo que enlazaste indica que el teaser es la parte de una publicación que aparece en la página principal cuando usas la etiqueta More. Por eso te proporcioné una respuesta que trata sobre el teaser. Mucha suerte.

chowwy chowwy
26 ene 2013 02:13:18

Lo siento mucho. He estado despierto desde las 3:30 en este trabajo y leí mal completamente el codex cuando abrí el ticket. Muchas gracias por tu tiempo.

Marcus Marcus
26 ene 2013 02:24:01

No hay problema. Espero que resuelvas todo.

chowwy chowwy
26 ene 2013 14:55:08
Mostrar los 7 comentarios restantes
0
//.... get_the_content() .....//

Solo edita esta parte así: get_the_content("")

Con este "" harás que el contenido esté vacío. Así solo tendrás el texto de tu contenido sin el enlace "leer más" :-)

3 may 2015 09:03:00
1
-2

Tuve que entrar en la carpeta wp-includes, dentro del archivo formatting.php y editar la línea 3284 para cambiar el número predeterminado de palabras a incluir en el extracto a un número enorme de esta manera:

    $excerpt_length = apply_filters( 'excerpt_length', 550000000000000 );

El valor predeterminado es solo 55

9 nov 2016 20:34:50
Comentarios

Deberías evitar editar archivos del núcleo como formatting.php siempre que sea posible, porque seguirán cambiando cuando actualices. En su lugar, usa el filtro excerpt_length para cambiar el valor.

Marcus Downing Marcus Downing
26 jul 2017 15:53:56