具有相同分类术语中的下一个和上一个帖子的自定义帖子类型

Posted

技术标签:

【中文标题】具有相同分类术语中的下一个和上一个帖子的自定义帖子类型【英文标题】:Custom post type with next and previous posts in same taxonomy term 【发布时间】:2013-11-07 22:23:01 【问题描述】:

好的,我已经通过 *** 和谷歌搜索和搜索,但找不到我要找的东西。我正在寻找一种方法,让我的下一个和上一个按钮链接到我在相同帖子类型术语中的帖子。

我有一个名为“Projects”的帖子类型,分类是“projects_category”。我在该分类下有几个术语,当我查看单个项目帖子时,我希望能够在该术语中单击下一个和上一个。有没有办法做到这一点?

更新(2013 年 11 月 13 日)(再次):

这就是我现在所拥有的。

<?php
$projectCat = wp_get_post_terms($postid,"projects_category");
if(count($projectCat))
$projectC = $projectCat[0]->slug;

else
$projectC = "";

$args = array(

'post_type'=>'project_post',
'showposts' => -1,
'tax_query' => array(
array(
        'taxonomy' => 'projects_category',
        'terms' => '$projectC',  //define your category id or slug here
            'field' => 'slug',
        )
),
'order'=>'ASC', 
);

$postlist = get_posts($args);
$posts = array();
foreach ($postlist as $post) 
$posts[] += $post->ID;


$prev_post = get_previous_post(); 
$prevID = $prev_post->ID ;
?>
<?php 
$next_post = get_next_post();
$nextID = $next_post->ID ;
?>          

<?php if (!empty($prevID))  ?>

<li><a href="<?php echo get_permalink($prevID); ?>"
title="<?php echo get_the_title($prevID) ." ". $projectC; ?>" 
class="p_prev widget_anim"><span></span>Previous</a>
</li>
<?php 

if (!empty($nextID))  ?>
<li><a href="<?php echo get_permalink($nextID); ?>" 
title="<?php echo get_the_title($nextID) ." ". $projectC;; ?>"  
class="p_next widget_anim">Next<span></span></a>
</li>
<?php   

wp_reset_postdata();
?>

我正在获取在 single-project_post 页面上找到的当前术语,并且查询似乎捕获了它,但查询并未遵循它需要保留在该术语中。它正在从我拥有的其他术语中提取帖子。即使我在查询中将确切的术语替换为 $projectC,它仍然给我下一个和上一个错误的帖子。谁能帮我?到目前为止,我感谢以前的答案提供的帮助。

【问题讨论】:

您不能在自定义分类使用 tax_query 的参数上传递直接类别。 【参考方案1】:

在子主题中创建functions.php,这样它就不会被更新覆盖。然后 编写一个返回帖子数组的函数。法典准确地告诉你如何去做你所要求的&lt;?php $project_posts_array = get_posts( $args ); ?&gt;。然后从链接标签中的自定义帖子类型调用该函数。

这是在同一个 Codex 页面上。

    <div class="alignleft">    
    <a href="<?php echo get_permalink($prevID); ?>"
    title="<?php echo get_the_title($prevID); ?>">Previous</a>
    </div>
    <?php 
    if (!empty($nextID))  ?>
    <div class="alignright">
    <a href="<?php echo get_permalink($nextID); ?>" 
     title="<?php echo get_the_title($nextID); ?>">Next</a>
    </div>

【讨论】:

对不起,我对此有点陌生。我查看了您提供的链接,但没有告诉我如何编写函数。【参考方案2】:
<?php
                 $args = array(
                'tax_query' => array(
                    array(
                            'taxonomy' => 'projects_category',
                            'field' => 'id',
                            'terms' => '2'  //define your category id hear
                            )
                    ),
                    'post_type'=>'project_post',
                    'order'=>'ASC',
                    'posts_per_page'=>-1
            );

                        $postlist = get_posts($args);
$posts = array();
foreach ($postlist as $post) 
   $posts[] += $post->ID;

                <?php
        $prev_post = get_previous_post(); 
        $prevID = $prev_post->ID ;
?>
<?php 
        $next_post = get_next_post();
        $nextID = $next_post->ID ;
?>          

    <?php if (!empty($prevID))  ?>

    <li><a href="<?php echo get_permalink($prevID); ?>"
            title="<?php echo get_the_title($prevID); ?>" 
            class="p_prev widget_anim">Previous</a>
            </li>
    <?php 

    if (!empty($nextID))  ?>
        <li><a href="<?php echo get_permalink($nextID); ?>" 
            title="<?php echo get_the_title($nextID); ?>"  
            class="p_next widget_anim">Next</a>
            </li>
    <?php   

    wp_reset_postdata();
?>

【讨论】:

如果我想使用当前的分类术语而不管它属于哪个类别怎么办? (即:术语是当前和过去的项目)【参考方案3】:

有同样的问题,我在这里找到了我的解决方案:http://bucketpress.com/next-and-previous-post-link-in-same-custom-taxonomy

希望它对你有用!

【讨论】:

以上是关于具有相同分类术语中的下一个和上一个帖子的自定义帖子类型的主要内容,如果未能解决你的问题,请参考以下文章

仅显示特定自定义帖子类型的自定义分类计数

不同的重写动态 slug 被视为重复

未找到具有自定义分页 404 的自定义分类和自定义帖子类型

php 具有自定义分类类别的自定义帖子类型

php 创建具有自定义分类的自定义帖子类型

无法获取术语或调用函数