WordPress PERVICE_POST_LINK排除具有多个类别的帖子

时间:2016-10-31 作者:user3574492

我有一个single-news WordPress中的页面,我在其中循环浏览所有帖子,并有条件地更新“上一步”和“下一步”按钮,以根据当前帖子的类别ID排除某些类别。

以下是我所拥有的:

          <?php if (have_posts()): ?>
            <?php while (have_posts()): ?>
                <?php the_post(); ?>

                <?php if ( in_category(7)) : ?>

                    <?php
                        $sidebar = \'blog-news\';        
                        $catagory = array(3,5,6,4,1);
                    ?>
                <?php endif; ?>

        <nav>
            <ul class="pager">
                <li class="prev">
                    <?php 
                        echo previous_post_link( "%link", "Previous", true, $catagory );
                    ?>
                </li>
                <li class="next">
                    <?php 
                        echo next_post_link( "%link", "Next", true, $catagory );
                    ?>
                </li>
            </ul>
        </nav>
    <?php endwhile; ?>
    <?php endif; ?>
我的问题是,如果一篇文章有两个类别,例如6和7,那么它会将该文章从链接中排除,而如果该文章只有一个类别,例如6,那么它不会将其排除。

我如何设置它,使其不排除任何具有类别7的帖子,无论其是否具有多个类别。

1 个回复
SO网友:newjonnydepony

您需要做的是更改excluded_terms 的参数previous_post_linknext_post_link 调用的函数$catagory. 只需从中删除当前帖子的所有类别IDexcluded_terms 大堆请确保定义一个类别数组,您不希望像上面的示例中那样显示这些类别。

$catagory = array(3,5,6,4,1) // array of category ids you don\'t want to be displayed
下一步是找到当前帖子的所有类别ID,并将其放入新数组中。

$post_category_objects = get_the_category(); // returns an array of WP_Term objects
$post_category_ids = array();
foreach($post_category_objects as $pco){
     array_push($post_category_ids, $pco->term_id); // adds the post\'s category id to the $post_category_ids array
}
接下来,您需要从中删除当前帖子的类别ID$catagory (<;--包含要从中排除的值的数组previous_post_linknext_post_link 功能)。

假设帖子包含类别6和7,这些类别ID将从$catagory.

// removes the current post\'s category ids from the $catagory-array
   foreach( $post_category_ids as $pci ){
        $key = array_search( $pci, $catagory );
        if( $key !== false ){
             unset( $catagory[$key]);
        }
   }
// rearranges the $catagory\'s keys
   $catagory = array_values($catagory);
把上面的全部代码放在if语句中,它应该可以工作。