如何为不同模板中的默认查询设置Alternate POSTS_PER_PAGE值

时间:2016-04-08 作者:TJ Sherrill

我有一个可湿性粉剂与多种职位类型的网站。文章、产品和分类法。

在管理中,我的WP Default posts\\u per\\u page设置为10。我想保持这个设置,因为博客最好每页10个。

但是,在类似taxonomyNAme存档的页面/模板上。php我想得到的远远不止10个。但我不需要自定义查询,因为WP知道要获取哪些帖子。我可以在不编写自定义查询的情况下劫持posts\\u per\\u页面吗?

谢谢

2 个回复
SO网友:Milo

使用pre_get_posts 在运行查询之前修改查询参数的操作。您可以使用Conditional Tags 以特定类型的页面为目标。

function wpd_alter_posts_per_page( $query ) {
    // don\'t alter admin or custom queries
    if ( is_admin() || ! $query->is_main_query() )
        return;

    // if this is your-custom-tax archive
    if ( is_tax( \'your-custom-tax\' ) ) {
        $query->set( \'posts_per_page\', 20 );
        return;
    }
}
add_action( \'pre_get_posts\', \'wpd_alter_posts_per_page\' );

SO网友:Jevuska

@TJ Sherrill,作为@Milo answer, WordPress说,“如果您想在页面呈现期间更改选项的值,而不在数据库中永久更改它,您可以使用pre_option_(option name).

下面是与您的问题相关的示例代码,使用is_tax 作为条件分类法:

add_filter( \'pre_option_posts_per_page\', \'limit_posts_per_page\' );
function limit_posts_per_page( $posts_per_page )
{
    /* taxonomy "genre" with term "romantic" */
    if ( is_tax( \'genre\', \'romantic\' ) ) 
        return 11;
    return $posts_per_page;
}
只要根据需要调整条件标签即可。