9

I have come across a problem whilst using the next_post_link() function. It seems that this function automatically echo's, for position reasons I need this to just return the link. Is there any available function or workaround that I can use to achieve this result?

15

try to work with http://codex.wordpress.org/Function_Reference/get_adjacent_post;

example:

$next_post_link_url = get_permalink( get_adjacent_post(false,'',false)->ID ); 
$prev_post_link_url = get_permalink( get_adjacent_post(false,'',true)->ID );
  • 1
    Bear in mind this will only get the adjacent URL - you'll have to generate the HTML like next_post_link does yourself. – TheDeadMedic Jun 27 '11 at 14:57
2

If you take a look at the source, next_post_link is just a wrapper for adjacent_post_link.

Unfortunately, this function doesn't take any form of 'echo' parameter, so you'll either need to replicate the code in your own function & return the value, or catch it in an output buffer;

ob_start();
next_post_link();
$next_post_link = ob_get_clean();
1

Actually, yes: just use get_next_posts_link(), using the same arguments.

The next_posts_lin() function simply echoes the returned value of get_next_posts_link().

EDIT

Erm, nevermind. I mis-read the function name.

You could use get_next_post(), which returns a post object; then you could get the permalink from the returned ID object parameter:

$nextpost = `get_next_post( $args )`;
$nextpostid = $nextpost->ID;
$nextpostlink = get_permalink( $nextpostid );

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.