这是一种非常不可靠的确定下一个和上一个类别ID的方法:
$previouscat = $id - 1;
$nextcat = $id + 1;
绝对不能保证相邻类别的ID之间仅相差1。事实上,唯一的情况是,如果同时添加所有类别,并且没有添加其他标签或自定义术语(如产品类别)。你的答案是通过投票获得的还是被接受的?如果是,我会担心的。
无论如何,事实是,类别实际上没有顺序。它们只是按插入数据库的时间排序,想象它们有固定的顺序并不符合WordPress的类别概念。
这就是说,如果你看一个类别列表,它们将按照特定的顺序排列,我想在某些情况下,你会想得到另一个类别的相邻类别。
因此,正确的方法是首先获得所有类别的列表,然后在结果列表中找到当前类别的位置。然后,您可以使用+1和-1根据列表中的位置获取下一个和上一个类别,因为位置将始终递增一。然后,您可以将这些位置中的类别用于链接。
// Make sure the code only runs on category archives.
if ( is_category() ) {
// Initialise variables to put the links into.
$previous_link = \'\';
$next_link = \'\';
// Get an array of all category IDs.
$category_ids = get_categories( [\'fields\' => \'ids\'] );
// Find the current category\'s position in the list of all categories.
$position = array_search( get_queried_object_id(), $category_ids );
// If there is a category in the list before the current category.
if ( isset( $category_ids[$position-1] ) ) {
// Set its link to the $previous_link variable.
$previous_link = get_category_link( $category_ids[$position-1] );
}
// If there is a category in the list after the current category.
if ( isset( $category_ids[$position+1] ) ) {
// Set its link to the $next_link variable.
$next_link = get_category_link( $category_ids[$position+1] );
}
// Now you can output the links however you\'d like.
echo $previous_link;
echo $next_link;
}