Custom page-links for paginated posts | wp_link_pages quicktag

This is going to be kind of hackish, but it is possible using an alternate function.

Add this to your theme’s functions.php file.

function wp_link_pages_titled($args="") {
    $defaults = array(
        'before' => '<p>' . __('Pages:'), 
        'after' => '</p>',
        'link_before' => '', 
        'link_after' => '',
        'echo' => 1
    );

    $r = wp_parse_args( $args, $defaults );
    extract( $r, EXTR_SKIP );

    global $page, $numpages, $multipage, $more, $pagenow, $pages;

    $output="";
    if ( $multipage ) {
        $output .= $before;
        for ( $i = 1; $i < ($numpages+1); $i = $i + 1 ) {
            $part_content = $pages[$i-1];
            $has_part_title = strpos( $part_content, '<!--pagetitle:' );
            if( 0 === $has_part_title ) {
                $end = strpos( $part_content, '-->' );
                $title = trim( str_replace( '<!--pagetitle:', '', substr( $part_content, 0, $end ) ) );
            }
            $output .= ' ';
            if ( ($i != $page) || ((!$more) && ($page==1)) ) {
                $output .= _wp_link_page($i);
            }
            $title = isset( $title ) && ( strlen( $title ) > 0 ) ? $title : 'First';
            $output .= $link_before . $title . $link_after;
            if ( ($i != $page) || ((!$more) && ($page==1)) )
                $output .= '</a>';
        }
        $output .= $after;
    }
    if ( $echo )
        echo $output;
    return $output;
}

Now update each call you have to wp_link_pages to instead call on the new function wp_link_pages_titled.

It’s not perfect, and it is kind of hacky, but it will do what you asked, just be sure you use this format when writing them into your posts..

Content intro

<!--nextpage--><!--pagetitle: Title 1 -->

Next page content 1

<!--nextpage--><!--pagetitle: Title 2 -->

Next page content 2

<!--nextpage--><!--pagetitle: Title 3 is longer -->

Next page content 3

<!--nextpage--><!--pagetitle: Another Title -->

Next page content 4

You can also title the link to the first page, but it must appear before anything else, ie. right on the first line, eg..

<!--pagetitle: Title for very first link -->
Content intro

Code was written with a mind to just getting it work, there’s room for improvement, i mainly wanted to illustrate it would be possible, it’s up to you(or anyone else) to expand upon it.

Hope that helps get things rolling for you.. 😉

Leave a Comment