Style the text before <!–more–> in single.php

I’d like to style differently the content before the link, but in single.php.

To be more specific, all my posts on the homepage only have a summary, and the rest of the text is cut thanks to the use of the more tag. So when I click on “read more” I see the complete post, starting with the summary we previously seen on the homepage. I’d like to differentiate this summary from the rest of the text, adding it some bold for example, to show to the user what he as already read.

Read More

Unfortunately I think this is not possible. Is it ?

Related posts

Leave a Reply

2 comments

  1. using: http://codex.wordpress.org/Function_Reference/the_content#Overriding_Archive.2FSingle_Page_Behavior

    and the $strip_teaser parameter:
    http://codex.wordpress.org/Function_Reference/the_content#Usage

    in single.php, replace <?php the_content(); ?> with:

    <?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); ?>
    
  2. I solved this by creating 2 functions to split the_content() in a before and after-function:

    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;
        }
    }
    

    In a template it can be used like this:

    <p class="intro"><?php MyClass::getContentBeforeMore(); ?></p>
    
    ... some other styling, like date or something ...
    
    <?php MyClass::getContentAfterMore(); ?>