我使用优雅主题中的额外主题。这个主题的一个特定功能是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(您可以从插入控制台的代码中看到),所以我的问题听起来可能有点疯狂。
最合适的回答,由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>");