下一个和上一个链接类别无限循环

时间:2018-05-17 作者:Lust

我希望创建上一个类别导航。我在stackexchange(2012)上找到一篇关于类别导航的旧帖子,但它返回了一个错误。

所以我做了这样的东西:

$category = get_the_category();
$name= $category[0]->name;
$slug= $category[0]->slug;
$id = $category[0]->cat_ID;

$previouscat = $id - 1;
$nextcat = $id + 1;
$category_link_next = get_category_link( $nextcat );
$category_link_previous = get_category_link( $previouscat );
?>

<a href="<?php echo $category_link_previous ?>" class="btnSuivPrec btnPrec"><span class="icon-precedent"></span></a>
<div class="picto colo<?php echo $slug ?>">
<span class="icon-<?php echo $slug ?>"></span>
</div>
<a href="<?php echo $category_link_next ?>" class="btnSuivPrec btnSuiv"><span class="icon-suivant"></span></a>
但是如何修改代码,使其具有无限循环?

1 个回复
SO网友:Jacob Peattie

这是一种非常不可靠的确定下一个和上一个类别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;
}

结束

相关推荐

Get Categories查询在函数.php中不起作用

我正在尝试在函数中获取自定义帖子类型的类别。php,但它不返回任何值,当我在任何主题文件中运行此查询时,它工作正常。这是我的密码function get_destinations(){ $args = array( \'type\' => \'accomodation\', \'child_of\' => 0, \'parent\'