为分类术语模板设置POSTS_PER_PAGE

时间:2020-07-25 作者:Phill

我有一个自定义的分类术语页面,用于显示与该术语相关的帖子(taxonomy-insight\\u type-academy.php)。我想我可以使用下面的代码来限制该页面上的帖子:

https://developer.wordpress.org/reference/functions/is_tax/

add_action( \'pre_get_posts\', function( $query) {
    if ( $query->is_tax( \'academia\', \'insight_type\' ) ) {
        $query->set( \'posts_per_page\', 1 );
    }
} );
我已经在分类法中添加了这个术语,但它似乎不起作用。我可以让它用于分类法,但不能用于术语。

有没有办法做到这一点?

谢谢

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

您拥有的分类模板(taxonomy-insight_type-academia.php) 形式为(taxonomy-{taxonomy}-{term}.php), 以及is_tax()is_tax( \'<taxonomy>\', \'<term>\' ), 所以在你的pre_get_posts 回调,您应该:

// Use this.
if ( $query->is_tax( \'insight_type\', \'academia\' ) )

// Not this.
if ( $query->is_tax( \'academia\', \'insight_type\' ) )
此外,为了避免与其他查询发生冲突,还应该检查当前查询是否是主查询,以及是否是管理员端请求。

if ( ! is_admin() && $query->is_main_query()
    && $query->is_tax( \'insight_type\', \'academia\' )
)
你可能已经知道了,但我认为这是一个很好的提醒