我在很多帖子中都看到了这个问题,因此如果我在这里重复了一个问题,我深表歉意,但我在尝试实现我找到的解决方案时没有任何乐趣。
我有一个自定义的帖子类型:show
, 为其指定了自定义分类:show_status
. 这可以设置为current
或past
.
在single-show.php
我的主题模板我放置了以下内容:
<div class="newerlink"><p><?php next_post_link(\'%link\', \'Next ›\', $in_same_term = true, $excluded_terms = \'\', $taxonomy = \'show_status\' ); ?></p></div>
<div class="olderlink"><p><?php previous_post_link(\'%link\', \'‹ 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 ›\', TRUE ); ?></p></div>
<div class="olderlink"><p><?php previous_post_link(\'%link\', \'‹ 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\')) { ;?>
区别对待。
我如何才能使其按预期工作?
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.php
和
single-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). \'">‹ Previous</a></p></div>\';
}
if ( !empty($nextid) ) {
echo \'<div class="newerlink"><p><a rel="next" href="\' . get_permalink($nextid). \'">Next ›</a></p></div>\';
}
最后,为了证明这一点,我安装了
radio buttons for taxonomies 插件并将其应用于此帖子类型,有效地将可能的分配数量减少到1。