从分页中删除类别

时间:2016-08-29 作者:NooBskie

我正在尝试修改一个旧主题,但我被这段代码卡住了

$post_type = \'portfolio\' == get_post_type() ? \'portfolio\' : \'post\';

if ( ! themify_check( "setting-{$post_type}_nav_disable" ) ) :

    $in_same_cat = themify_check( "setting-{$post_type}_nav_same_cat" )? true: false;
    $this_taxonomy = \'post\' == get_post_type() ? \'category\' : get_post_type() . \'-category\';
    $previous = get_previous_post_link( \'<span class="prev">%link</span>\', \'<span class="arrow">\' . _x( \'&laquo;\', \'Previous entry link arrow\',\'themify\') . \'</span> %title\', $in_same_cat, \'\', $this_taxonomy );
    $next = get_next_post_link( \'<span class="next">%link</span>\', \'<span class="arrow">\' . _x( \'&raquo;\', \'Next entry link arrow\',\'themify\') . \'</span> %title\', $in_same_cat, \'\', $this_taxonomy );

    if ( ! empty( $previous ) || ! empty( $next ) ) : ?>

        <div class="post-nav clearfix">
            <?php echo $previous; ?>
            <?php echo $next; ?>
        </div>
        <!-- /.post-nav -->

    <?php endif; // empty previous or next

endif; // check setting nav disable
这一部分具体。目前它列出了我所有的文章,但我不知道如何只列出类别id1 2 3

$this_taxonomy = \'post\' == get_post_type() ? \'category\' : get_post_type() . \'-category\';

1 个回复
SO网友:bynicolas

你看错线了。$this_taxonomy 说明要查找的分类法类型(类别、标记、自定义税等),而不是该分类法类型中的实际术语。

话虽如此,你应该看看$previous$next. 更具体地说,get_previous_post_link()get_next_post_link(). 第四个参数是$excluded_terms 当前为空。

codex说您可以提供一个数组或逗号分隔的术语ID列表。

这看起来很难维护,因为每次在分类法中添加新术语时,都必须更新该参数。

但从技术上来说,如果你有类别1,2,3,45, 然后供应$excluded_terms = \'4,5\'; 将这些术语从列表中排除。

因此,如果您想要一个不需要每次添加新类别时都进行更新的方法,我将尝试通过修改主查询来实现将此添加到functions.php

add_action( \'pre_get_posts\', \'my_allowed_cats\' );
function my_allowed_cats( $query ){

  $post_type = get_post_type();

  if( $post_type == \'post\' || $post_type == \'portfolio\' ){

    // Use category ids
    $allowed_cats = array(
      1,
      2,
      3,
    );

    $query->set( \'category__in\', $allowed_cats );

  }

}
这是未经测试的,但应该有效