如何根据标签获取指向上一个和下一个存档页面的链接

时间:2019-03-09 作者:Skaidrius

我使用优雅主题中的额外主题。这个主题的一个特定功能是category layout builder,它根据分类法创建归档文章。

我已经基于标签创建了这样的布局页面(该页面只显示带有某些特定标签的帖子)。将有20多个类似的页面,只是基于不同标签的帖子。现在,我想插入一个短代码,根据标记显示指向这些上一个和下一个归档页面的链接(获取上一个和下一个归档页面)。

当前标记代码:

$tag = get_the_tags();

if ($tags){
    foreach( $tags as $tag ) :
        echo("<script>console.log(\'PHP: ". $tag->slug ."\');</script>");
    endforeach;
}
我得到了一个完整的标签列表:

$all_tags = get_tags(array(\'get\'=>\'all\'));

if($all_tags) {
     foreach ($all_tags as $listtag):
         echo("<script>console.log(\'PHP: ". $listtag->slug  ."\');</script>");
    endforeach;
} else {
    _e(\'No tags created.\', \'text-domain\');
} 
如何获取上一个和下一个标签?此外,如果我已经在第一个标记上并且正在查找前一个标记,那么我想获取标记数组的最后一个标记(相应地,当我在最后一个标记上并且正在查找下一个标记时,可以获取第一个标记)。

我知道我应该检索整个标记数组,然后获取当前标记在该标记数组中的位置。然后获取带有“当前标记位置-1”和“当前标记位置+1”的标记。我一直在寻找,试图实现基于类别的类似解决方案的想法(如How to get next previous category in same taxonomy?, Is it possible to put next and previous category links? 等等)没有运气。

我基于javascript(您可以从插入控制台的代码中看到),所以我的问题听起来可能有点疯狂。

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

好的,谢谢所有想帮忙的人。我的最终代码(基于https://goo.gl/c55S3v 并且工作正常):

$this_tag = get_queried_object();
$all_tags = get_tags();

foreach( $all_tags as $position => $tag ) :
    if( $this_tag->term_id == $tag->term_id ) :
        $next_tag_pos = $position + 1;
        $prev_tag_pos = $position - 1;
        break;
    endif;
endforeach;

$prev_tag_pos = $prev_tag_pos < 0 ? count($all_tags) - 1 : $prev_tag_pos;
$next_tag_pos = $next_tag_pos > count($all_tags) - 1 ? 0 : $next_tag_pos;

echo("<script>console.log(\'Previous tag: ". $prev_tag_pos . " ". get_term_link( $all_tags[$prev_tag_pos] ) . "\');</script>");
echo("<script>console.log(\'Next tag: ". $next_tag_pos . " ". get_term_link( $all_tags[$next_tag_pos] ) .  "\');</script>");

相关推荐

Use Tags to initiate Search

首先,我是Wordpress和PHP的新手,如果这是一个基本问题,我深表歉意。我安装了Wordpress,每篇文章都用标签标记,这些标签包含以下链接:href=domain.com/index.php/tag/TAGNAME 但我希望链接是:href=domain.com/index.php/search/TAGNAME 据我所知,我需要改变get_tag_link() 但所做的就是使用get_term_link() 然后我完全迷路了。是否有一个函数If(tag){ return \"