可以放置下一个和上一个类别链接吗?

时间:2012-09-18 作者:Liana Mir

我并没有试图导航到某个类别中的下一篇文章,而是将上一个类别和下一个类别放在其归档页面的类别描述下,并在归档页面之间导航。

我已经搜索过了,但我不确定如果没有硬编码类别,这是否可行,我不想这样做。我想动态链接。

没有要求任何人为我编写任何代码,只是问这听起来像是我需要做什么的一个好的开始方向:

使用wp\\u list\\u categories构建get\\u next\\u categories函数,然后从该列表中提取相邻的并将其转换为链接?

简而言之,我想要一个类别归档页面,在显示帖子之前显示类别标题、描述(知道如何做到这两个),然后显示下一个和上一个类别链接。我不是在创建类别列表,只是在创建导航链接。

希望这能澄清我的想法。仍在搜索codex和exchange。

3 个回复
最合适的回答,由SO网友:Milo 整理而成

不确定这是否是您想要的,获取所有类别,并按照从返回的顺序输出指向下一个和上一个的链接get_categories():

$this_category = get_queried_object();
$categories = get_categories();

foreach( $categories as $position => $cat ) :
    if( $this_category->term_id == $cat->term_id ) :
        $next_cat = $position + 1;
        $prev_cat = $position - 1;
        break;
    endif;
endforeach;

$next_cat = $next_cat == count($categories) ? 0 : $next_cat;
$prev_cat = $prev_cat < 0 ? count($categories) - 1 : $prev_cat;

echo \'previous: \' . get_term_link( $categories[$prev_cat] );
echo \'next: \' . get_term_link( $categories[$next_cat] );

SO网友:kaiser

通常,答案取决于您的

$permalinks = get_option( \'permalink_structure\' )
如果没有返回false, 然后启用了永久链接。然后,您可以检查您的设置并从中构建精确的链接。

然后,您可以简单地提取所需的列表/对象部分并构建链接。

// Maybe you want them for the labels?
$cat_names = wp_list_pluck( get_the_category( get_the_ID() ), \'name\' );

// For nice permalinks
$cat_slugs = wp_list_pluck( get_the_category( get_the_ID() ), \'slug\' );
// For non-beautiful permalink sites
$cat_IDs   = wp_list_pluck( get_the_category( get_the_ID() ), \'term_id\' );
由于我不知道您将如何对它们进行排序/排序,也不知道您的具体目标是什么,因此我无法为您提供解决方案,只需确定下一个/上一个类别,然后建立链接:

printf( 
     \'<a href="%1$s" title="%2$s">%2$s</a>\'
    ,home_url( \'/\' ) // Append your link inside the single quotes after the slash
    ,$cat_name[0]    // Set your next/prev cat here
);

SO网友:timholz

此函数适用于类别(无层次结构)和标记。它还达到了第一个分类法(cat或tag)。您可以将其添加到函数中。php

<?php
if (!function_exists(\'my_tax_paging_nav\')) {
/*
Display navigation to next/previous set of categories/tags when applicable.
*/
function my_tax_paging_nav()
{
    $this_taxonomy = get_queried_object();
    if (is_category()) {
        $taxonomies = get_categories();
        //for other languages than english
        $plural     = \'\';
        $taxlabel   = \'Category\';
    }
    if (is_tag()) {
        $taxonomies = get_tags();
        //for other languages than english
        $plural     = \'s\';
        $taxlabel   = \'Tag\';
    }

    foreach ($taxonomies as $position => $tax):
        if ($this_taxonomy->term_id == $tax->term_id):
            $next_tax = $position + 1;
            $prev_tax = $position - 1;
            break;
        endif;
    endforeach;

    //variables to show/hide when top/bottom is reached
    $showPrev;
    $showNext;
    //bottom
    if ($prev_tax < 0){
        $prev_tax=count($taxonomies) - 1;
        $showPrev=\'\';
        }else{
            $prev_tax;
            $showPrev = \'<span class="meta-nav">&larr; </span><small>Vorherige\' . $grammatik . \' \' . $taxlabel . \': </small>\' . $taxonomies[$prev_tax]->name;
        }

    //top
    if ($prev_tax == count($taxonomies)-2){
        $next_tax=0;
        $showNext = \'\';
        }else{
            $showNext = \'<small>Nächste\' . $grammatik . \' \' . $taxlabel . \': </small>\' . $taxonomies[$next_tax]->name.\'<span class="meta-nav"> &rarr;</span>\';
            }

    $prevLink = get_term_link( $taxonomies[$prev_tax] );
    $nextLink = get_term_link( $taxonomies[$next_tax] );
    ?>
    <nav class="navigation post-navigation" role="navigation">
        <div class="nav-links">
            <div class="nav-previous"><a href="<?php echo $prevLink;?>"><?php echo $showPrev; ?></a></div>
            <div class="nav-next"><a href="<?php echo $nextLink;?>"><?php echo $showNext ?></a></div>
        </div><!-- .nav-links -->
    </nav><!-- .navigation -->
    <?php
  }
}//end if     
您可以在类别中调用此函数。php或标记。php:

<?php my_tax_paging_nav(); ?>
您可能需要根据需要更改html标记。我希望这能帮助别人。问候西奥

结束

相关推荐

将筛选器添加到wp_Dropdown_Pages()或wp_Dropdown_Categories()-没有选择容器?

我在和wp_dropdown_pages() 和wp_dropdown_categories() 并且两者都始终输出<select>-盒子及其<option>s作为项目。有没有可能在这个函数中添加一个过滤器/挂钩,这样我就可以得到<option>s而不被包裹在<select>我这样问的原因是我想将页面和类别合并到一个下拉列表中。我找不到参数来设置这个!有什么想法吗?