自定义分类中的上一个/下一个自定义帖子链接

时间:2017-07-26 作者:mtm

我在很多帖子中都看到了这个问题,因此如果我在这里重复了一个问题,我深表歉意,但我在尝试实现我找到的解决方案时没有任何乐趣。

我有一个自定义的帖子类型:show, 为其指定了自定义分类:show_status. 这可以设置为currentpast.

single-show.php 我的主题模板我放置了以下内容:

<div class="newerlink"><p><?php next_post_link(\'%link\', \'Next &rsaquo;\', $in_same_term = true, $excluded_terms = \'\', $taxonomy = \'show_status\' ); ?></p></div>
<div class="olderlink"><p><?php previous_post_link(\'%link\', \'&lsaquo; Previous\', $in_same_term = true, $excluded_terms = \'\', $taxonomy = \'show_status\' ); ?></p></div>
我希望用户能够在分类为current 或作为past 但不要从一种类型转移到另一种类型。

我已经尝试了这些链接的多个版本,但都显示出要么根本没有链接,要么链接不区分show_status 不停地从一个岗位传递到另一个岗位。所有车型均为基本车型:

<div class="newerlink"><p><?php next_post_link(\'%link\', \'Next &rsaquo;\', TRUE ); ?></p></div>
<div class="olderlink"><p><?php previous_post_link(\'%link\', \'&lsaquo; Previous\', TRUE ); ?></p></div>
我想我还没有完全弄清楚。我也试过了this method, 其中呈现了链接,但不尊重show_status 任何一个

循环输入single-show.php 作为帖子模板中的标准:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    // content
<?php endwhile; ?>    
<?php else: ?>
<?php endif; ?>
如果我使用的类别需要不同的内容:

<?php if (has_term(\'current\', \'show_status\')) { ;?>

<?php if (has_term(\'past\', \'show_status\')) { ;?>
区别对待。

我如何才能使其按预期工作?

1 个回复
SO网友:mtm

通过使用为不同的分类术语指定不同的模板,我设法解决了这个问题,并在我的问题下的注释中朝着正确的方向进行了一些指导single-show.php 转移如下:

if ( have_posts() ) { the_post(); rewind_posts(); }
    if (has_term(\'current\', \'show_status\')) {
        include(TEMPLATEPATH . \'/single-show-current.php\');
    }
    elseif (has_term(\'past\', \'show_status\')) {
        include(TEMPLATEPATH . \'/single-show-past.php\');
    }
    else {
        include(TEMPLATEPATH . \'/single-default.php\');
    }
然后,在single-show-current.phpsingle-show-past.php 正如上面Max指出的那样,我指定的导航模板是基于术语而不是分类法的(感谢您的帮助)。

解决方案基于this code at Bucket Press.

$postlist_args = array(
    \'posts_per_page\'  => -1,
    \'orderby\'         => \'menu_order title\',
    \'order\'           => \'ASC\',
    \'post_type\'       => \'show\',
    \'show_status\'    => \'current\'
    ); 
    $postlist = get_posts( $postlist_args );
    $ids = array();
    foreach ($postlist as $thepost) {
        $ids[] = $thepost->ID;
    }   
    $thisindex = array_search($post->ID, $ids);
    $previd = $ids[$thisindex-1];
    $nextid = $ids[$thisindex+1];
    if ( !empty($previd) ) {
        echo \'<div class="olderlink"><p><a rel="prev" href="\' . get_permalink($previd). \'">&lsaquo; Previous</a></p></div>\';
                        }
    if ( !empty($nextid) ) {
        echo \'<div class="newerlink"><p><a rel="next" href="\' . get_permalink($nextid). \'">Next &rsaquo;</a></p></div>\';
    }
最后,为了证明这一点,我安装了radio buttons for taxonomies 插件并将其应用于此帖子类型,有效地将可能的分配数量减少到1。

结束

相关推荐