我有多个类别的帖子。我会在特定类别的帖子上显示下一个/上一个帖子链接,不管这篇帖子还有多少其他类别。链接现在指向该帖子所属的任何类别中的帖子。我只想链接到该帖子所属类别中的下一篇/上一篇帖子。
我在网上找到了一个功能,我试图更改它以满足我的需要。这是我的职责。php文件:
//Next and previous post logic
function get_excluded_categories() {
// Get categories of current post
$current_cats = wp_get_post_terms( get_the_ID(), \'category\' );
// Declare array to store excluded categories
$excluded_cats = [];
// Loop through current categories
foreach( $current_cats as $cat ) {
// Check if current category is included
$this_cat = $cat->slug;
if($this_cat !== \'[SLUG]\') {
// If it is not, add it\'s term ID to the excluded array
array_push($excluded_cats, $cat->term_id);
}
}
return $excluded_cats;
}
以下是我显示链接的方式:
<?php if (in_category(\'[SLUG]\')) : ?>
<div class = "next-post"><?php next_post_link(\'%link »\', \'%title\', true, get_excluded_categories()); ?></div>
<div class = "prev-post"><?php previous_post_link(\'« %link\', \'%title\', true, get_excluded_categories()); ?></div>
<?php endif; ?>
这并不像预期的那样有效。只显示一个链接,下一个或上一个帖子链接。如果我在这个类别中只有两篇帖子,这是很好的行为。但是如果我有三篇文章,我只想在第一篇文章上有下一个链接,在中间的文章上有下一个和上一个链接,在最后一篇文章上只有上一个链接。
目前,它似乎只是跳过了第一个和最后一个帖子之间的任何现有帖子 实际上,跳过的不是“中间”的帖子,而是第二篇帖子没有到第三篇帖子的链接。如果我手动进入第三篇文章,它之前有一个指向第一篇文章的链接,而不是预期的第二篇。
我知道我的逻辑可能是错的,但我不明白是怎么回事,在哪里,为什么。
非常感谢您的帮助!
SO网友:TASan
我通过放弃代码并注册新的分类法解决了这个问题。然后我在单曲中使用了这段代码。php:
<?php if (has_term(\'[TERM-NAME]\', \'[TAXONOMY-NAME]\')) : ?>
<div class = "next-post"><?php next_post_link(\'%link »\', \'%title\', true, \'\', \'[TAXONOMY-NAME]\') ?></div>
<div class = "prev-post"><?php previous_post_link(\'« %link\', \'%title\', true, \'\', \'[TAXONOMY-NAME\') ?></div>
<?php endif; ?>
这样做允许我拥有多个类别,因为我在每个帖子的自定义分类法中只分配了一个术语。