3

I have a custom post type name->('portfolio'), with a taxonomy name 'portfolio_category'.

What I want is to add next and previous links on its single page file which is single-portfolio.php. When I click either of the links, it should redirect to the next or previous post in the same post type and in the same taxonomy term.

I used next_post_link() and previous_post_link() but it seems that it only works in single post but not in single custom post type..

Any suggestions will greatly be appreciated.

1

4 Answers 4

2

previous_post_link() and next_post_link() work perfectly with custom post types. You need to paste this code in your single-customposttype.php (which in your case is single-portfolio.php):

<div class="previous-post-link">
                <?php previous_post_link('%link', '<< Previous Post', $in_same_term = true, $excluded_terms = '', $taxonomy = 'the-custom-taxonomy-associated-with-your-custom-post-type'); ?>                    
            </div>

            <div class="next-post-link">
                <?php next_post_link('%link', 'Next Post >>', $in_same_term = true, $excluded_terms = '', $taxonomy = 'the-custom-taxonomy-associated-with-your-custom-post-type'); ?>                    
            </div> 
1

The $taxonomy parameter for both next_post_link and previous_post_link was introduced in Wordpress version 3.8.

When the $in_same_term parameter is set to true, you need to set the $taxonomy parameter to the desired taxonomy. By default, it is set to category. Remember, post_format is also a taxonomy

Example:

next_post_link( '%link', 'Next post in category', TRUE, ' ', 'post_format' );

Just a note, do not use next_post and previous_post. It has already being depreciated as from Wordpress version 2.0.0. See wp-includes/deprecated.php#L121 and wp-includes/deprecated.php#L158

EDIT

The single post links will automatically page between posts within the same post type as the current post's post type is used to retrieve the adjacent posts. Check the source code, get_adjacent_post() which is used by the next and previous post links. Pay particular attention to line 1550 ( currently for version 4.1 )

1550    $where = apply_filters( "get_{$adjacent}_post_where", $wpdb->prepare( "WHERE p.post_date $op %s AND p.post_type = %s AND p.post_status = 'publish' $where", $current_post_date, $post->post_type ), $in_same_term, $excluded_terms );
0

Add this code to your single-cpt.php file.

<?php previous_post_link('%link', 'Previous in CPT', TRUE) ?>
<?php next_post_link('%link', 'Next in CPT', TRUE) ?>

Where cpt is the name of your custom post type.

1
  • 1
    previous_post and next_post has been depreciated since v2.0.0 which was released in 2005 Aug 10, 2014 at 15:39
-1

Try this is with thumbnail:

<?php $prevPost = get_previous_post(); if($prevPost) { ?>
    <li class="previous">
    <?php $prevthumbnail = get_the_post_thumbnail($prevPost->ID, array(80,80) ); ?>
        <?php previous_post_link('%link', $prevthumbnail . '<strong>Prev</strong> <span>%title</span>', TRUE); ?>
    </li>
<?php } $nextPost = get_next_post(); if($nextPost) { ?>
    <li class="next">
    <?php $nextthumbnail = get_the_post_thumbnail($nextPost->ID, array(80,80) ); ?>
        <?php next_post_link('%link', $nextthumbnail . '<strong>Next</strong> <span>%title</span>', TRUE); ?>
    </li>
<?php } ?>
3
  • 1
    Code-only answer is worst. Try to add some direction or description by editing it. :) May 1, 2014 at 9:12
  • I think you missed the question here. The OP did not ask for links with thumnails. Also, code only answers is not considered as a good answer Aug 10, 2014 at 15:39
  • Thanks, that help me a lot. With a few css adjustments I ended up with a pretty nice navigation. I've set the previous/next nav to have a fixed position, while setting position absolute for each one so they could be displayed on left/right side of the screen. Apr 20, 2017 at 19:27

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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