Forums

[resolved] Is it possible to add a paragraph to the "more_link_text"? (6 posts)

  1. conditionkill
    Member
    Posted 3 years ago #

    I'm wondering if there's any possible way to make the "more_link_text" in "the_content" appear under the actual content? (not right next to it)

    Here is my current code:
    <?php the_content('Read more..'); ?>
    Source:
    <a href="http://localhost/wordpress/20/lorem-ipsum-3/#more-20" class="more-link">Read more..</a></p>
    Screen:
    http://img89.imageshack.us/img89/4687/20090219194634gh4.png

    One of my attempts to make the "Read more.." appear under the content:
    (which makes the whole paragraph (empty space too) clickable)
    <?php the_content('<p>Read more..</p>'); ?>
    Source:

    <a href="http://localhost/wordpress/20/lorem-ipsum-3/#more-20" class="more-link">
    <p>Read more..</p>
    <p></a></p>

    Screen:
    http://img7.imageshack.us/img7/8095/20090219194605mt7.png

  2. conditionkill
    Member
    Posted 3 years ago #

    I know that I can manually add the paragraph before the "more tag" in every post, but I'm wondering if there's another way to do it..

  3. conditionkill
    Member
    Posted 3 years ago #

  4. conditionkill
    Member
    Posted 3 years ago #

    Uhm.. Lol.. Kinda fixed it.. But used huge ammount of code.. Prolly lotsa unecessary code here.. Lotsa!

    Used:
    <?php echo get_the_content_awesome('Read more..'); ?>
    In template

    And added:

    <?php
    function get_the_content_2($more_link_text = null, $stripteaser = 0, $more_file = '') {
    	global $id, $post, $more, $page, $pages, $multipage, $preview, $pagenow;
    
    	if ( null === $more_link_text )
    		$more_link_text = __( '(more...)' );
    
    	$output = '';
    
    	// If post password required and it doesn't match the cookie.
    	if ( post_password_required($post) ) {
    		$output = get_the_password_form();
    		return $output;
    	}
    
    	if ( $more_file != '' )
    		$file = $more_file;
    	else
    		$file = $pagenow; //$_SERVER['PHP_SELF'];
    
    	if ( $page > count($pages) ) // if the requested page doesn't exist
    		$page = count($pages); // give them the highest numbered page that DOES exist
    
    	$content = $pages[$page-1];
    	if ( preg_match('/<!--more(.*?)?-->/', $content, $matches) ) {
    		$content = explode($matches[0], $content, 2);
    		if ( !empty($matches[1]) && !empty($more_link_text) )
    			$more_link_text = strip_tags(wp_kses_no_null(trim($matches[1])));
    	} else {
    		$content = array($content);
    	}
    	if ( (false !== strpos($post->post_content, '<!--noteaser-->') && ((!$multipage) || ($page==1))) )
    		$stripteaser = 1;
    	$teaser = $content[0];
    	if ( ($more) && ($stripteaser) )
    		$teaser = '';
    	$output .= $teaser;
    	if ( count($content) > 1 ) {
    		if ( $more ) {
    			$output .= '<span id="more-'.$id.'"></span>'.$content[1];
    		} else {
    			$output = balanceTags($output);
    			if ( ! empty($more_link_text) )
    				$output .= ' <a href="'. get_permalink() . "#more-$id\" class=\"more-link\">$more_link_text</a>
    ";
    		}
    
    	}
    	if ( $preview ) // preview fix for javascript bug with foreign languages
    		$output =	preg_replace_callback('/\%u([0-9A-F]{4})/', create_function('$match', 'return "&#" . base_convert($match[1], 16, 10) . ";";'), $output);
    
    	return $output;
    }
    
    	function get_the_content_awesome($more_link_text = '(more...)', $stripteaser = 0, $more_file = '') {
    	$content = get_the_content_2($more_link_text, $stripteaser, $more_file);
    	$content = apply_filters('the_content', $content);
    	$content = str_replace(']]>', ']]>', $content);
    	return $content;
    }
    ?>

    To functions.php

    The only thing I really did was to copy the "get_the_content" and the "the_content" function, renamed them and made one small adjustment.

    I changed the original:
    $output .= ' <a href="'. get_permalink() . "#more-$id\" class=\"more-link\">$more_link_text</a>";

    To the slightly modified:
    $output .= ' <p><a href="'. get_permalink() . "#more-$id\" class=\"more-link\">$more_link_text</a></p>";
    (just added the <p>'s)

    There's prolly a 100 times shorter way to do this.. I would appreciate if someone could show me how.. :p

  5. Otto
    Tech Ninja
    Posted 3 years ago #

    Why not use a style instead? Edit the style.css file for your theme:

    .more-link {
    display:block;
    }
  6. conditionkill
    Member
    Posted 3 years ago #

    Omg.. Lol, so simple..
    Thanks :D

Topic Closed

This topic has been closed to new replies.

About this Topic