¡Estire el texto antes! - more-- en single.php

4

Me gustaría aplicar un estilo diferente al contenido antes del enlace, pero en single.php.

Para ser más específicos, todas mis publicaciones en la página de inicio solo tienen un resumen, y el resto del texto se recorta gracias al uso de la etiqueta más. Entonces, cuando hago clic en "leer más", veo la publicación completa, comenzando con el resumen que vimos anteriormente en la página de inicio. Me gustaría diferenciar este resumen del resto del texto, agregándolo en negrita, por ejemplo, para mostrar al usuario lo que ya leyó.

Lamentablemente creo que esto no es posible. ¿Lo es?

    
pregunta koskoz 13.07.2011 - 11:10

2 respuestas

2

utilizando: enlace

y el parámetro $ strip_teaser: enlace

en single.php, reemplaza <?php the_content(); ?> con:

<?php if( strpos(get_the_content(), '<span id="more-') ) : ?>
  <div class="before-more">
  <?php global $more; $more=0; the_content(''); $more=1; ?>
  </div>
<?php endif; ?>     
<?php the_content('', true); ?>
    
respondido por el Michael 13.07.2011 - 12:01
2

Resolví esto creando 2 funciones para dividir the_content() en una función anterior y posterior:

class MyClass
{
    /**
     * Echo the content before the <!--more--> tag
     */
    public static function getContentBeforeMore()
    {
        global $more;
        $more = false;
        the_content(false);
        $more = true;
    }

    /**
     * Echo the content after the <!--more--> tag
     */
    public static function getContentAfterMore($removeMoreTag = true)
    {
        $content = get_the_content(null, true);
        $content = apply_filters( 'the_content', $content );
        $content = str_replace( ']]>', ']]&gt;', $content );
        // Remove the empty paragraph with the <span id="more-.."></span>-tag:
        if($removeMoreTag)
        {
            $content = preg_replace('/<p><span id="more-\d+"><\/span><\/p>/m', '', $content);
        }
        echo $content;
    }
}

En una plantilla se puede usar así:

<p class="intro"><?php MyClass::getContentBeforeMore(); ?></p>

... some other styling, like date or something ...

<?php MyClass::getContentAfterMore(); ?>
    
respondido por el Giel Berkers 31.07.2014 - 16:44

Lea otras preguntas en las etiquetas