如何从WordPress的第1页和第2页排除特定类别?

时间:2018-08-23 作者:Sajeev

我在Wordpress网站上有两个页面。所有2页都显示帖子。我需要限制第一页的几个类别和第二页的其他几个类别。

 <?php
    function excludeCat($query) {
      if ( $query->is_home ) {
        $query->set(\'cat\', \'-3,-5,-23\');
      }
      return $query;
    }
    add_filter(\'pre_get_posts\', \'excludeCat\');
    ?>
这一个将不起作用,因为它将阻止所有2页的类别。

1 个回复
SO网友:kero

您就快到了,剩下的就是查看您当前所在的页面。

在下面的代码中,我首先创建一个数组,其中键对应于页码,值是要排除的类别。这只会导致一次写作$query->set(.... 为了确保键存在一个值,我添加了isset().

<?php
function excludeCat($query) {
    $page = get_query_var(\'paged\', 1);

    $exclude = [
        1 => \'-3,-5,-23\',
        2 => \'...\',
    ];

    if ($query->is_home && isset($exclude[$page])) {
         $query->set(\'cat\', $exclude[$page]);
    }
    return $query;
}
add_filter(\'pre_get_posts\', \'excludeCat\');

结束