Next and previous link in custom post type in the same taxonomy term

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.

Read More

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.

Related posts

Leave a Reply

4 comments

  1. 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> 
    
  2. 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 );
    
  3. 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.

  4. 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 } ?>