从存档调用的 CPT 页面上的 Wordpress 上一个和下一个链接

Posted

技术标签:

【中文标题】从存档调用的 CPT 页面上的 Wordpress 上一个和下一个链接【英文标题】:Wordpress previous and next links on CPT Page called from Archive 【发布时间】:2019-01-20 18:32:37 【问题描述】:

我有一个 CPT 和 3 个自定义分类法。对于每个分类,都存在存档页面,其中包含按标题排序的分类术语的项目。

项目页面的页脚中有 prevoius/next-Links,但这些链接到发布日期此 CPT 的上一个/下一个项目。

如何按照访问者的预期将其替换为存档中上一个/下一个项目的链接?

第一个想法是从存档页面传输循环内容并查找相邻项目?

【问题讨论】:

例如水果的 CPT,条目(最后输入的第一个):* 香蕉 * 苹果 * 葡萄 * 樱桃 * 猕猴桃 任何分类页面列出标题中的项目,按“pre_get_posts”排序 - 主题过滤器:* 苹果 * 香蕉 * 樱桃 * 葡萄 * 猕猴桃` 当从档案中调用“cherry”页面时,上一个链接应该链接到“banana”,下一个链接应该链接到“grape”。实际的做法是用帖子的 id、title 和链接填充一个 $_SESSION 变量在存档页面的循环期间并通过项目页面上的帖子 id 检索邻居值 【参考方案1】:

您需要将此代码添加到您的单一 myposttype。

/* Fist get the posts from specific taxonomy */
$postByTaxonomy = get_posts(array(
  'post_type' => 'post', // fruit
  'numberposts' => -1,
  //'order'          => 'ASC', // you can add to order by name
  //'orderby'        => 'title', // you can add to order by name
  'tax_query' => array(
    array(
      'taxonomy' => 'fruit-category', // category of Fruit CPT
      'field' => 'slug',
      'terms' => 'fruit-category-1', // This is the one you check from editor page
    )
  )
)); 

/* Store the IDs in array from get_posts above */
$theIDs = array();
foreach ($postByTaxonomy as $pbt) 
  $theIDs[] += $pbt->ID;

/* print_r($theIDs) = Array ( [0] => 3696 [1] => 3697 [2] => 128 [3] => 4515 [4] => 4516 [5] => 4514 ) */


/* Now we will use a php function array_search() for us to get the current post and we can set the previous and next IDs */
$current = array_search( get_the_ID(), $theIDs); /* here you need to get the id of the post get_the_ID() or $post->ID */
$prevID = $theIDs[$current-1];
$nextID = $theIDs[$current+1];

/* DISPLAY - Now that we have the IDs of the prev/next post you can use them to your template in your case the permalink */
<a href="<?php echo get_permalink($prevID); ?>"> Previous</a>
<a href="<?php echo get_permalink($nextID); ?>"> Next</a>

【讨论】:

不幸的是,我认为事情没那么简单。 我的模板是单一的 myposttype 并用于所有页面,因此它不适用于特定的分类。主题使用 the_post_navigation() 根据发布日期而不是排序顺序获取上一个/下一个。我尝试做的事情: - 在任何分类法的存档页面上,用户通过单击项目标题或图像进入项目页面 - 在项目页面上,上一个/下一个链接到相同排序的上一个/下一个项目排序存档页面的顺序 我想很难解释我的意思。我的问题不是存档页面上,完全符合我的需要。我的问题是从存档页面调用时,在 item 页面 上获取正确的上一个/下一个项目链接和标题。我试着写一个新条目来更好地解释。 查看有问题的新评论 我已经更新了我对评论中您的问题的回答。为了让我们获得正确的上一个/下一个链接,我们需要创建一个具有正确排序的新查询。然后,将 ID 存储在 array() 中,以便我们可以使用 PHP 函数 array_search() 来获取上一个/下一个 ID。检索 ID 后,您几乎可以从那里做任何事情。您可以获得永久链接、标题、特色图片等。

以上是关于从存档调用的 CPT 页面上的 Wordpress 上一个和下一个链接的主要内容,如果未能解决你的问题,请参考以下文章

多个分类法的 WordPress 存档页面

侧边栏在 WordPress 存档页面上的行为不同

Wordpress:如何删除默认 Wordpress 日历上的存档链接

控制 wordpress 存档页面上的帖子数量

Wordpress - 自定义帖子存档页面上的特色图片

php [WordPress] - 在CPT页面上替换gettext