wordpress的预置自定义筛选

在使用wordpress来制作企业网站的时候,我们想要获取一些自定义的数据,通常会用new WP_QUERY来实现,我们在何处使用就在何处new出一个查询,但是wordpress还有一个非常牛的函数,就是pre_get_posts。

pre_get_posts是wordpress的一个内置钩子,用于预置自定义数据筛选,可以在数据查询之前设定数据的查询规则,无论是wordpress导入数据还是手动添加的数据,都可以预置筛选,简单的说我们在访问wordpress页面的时候,默认显示的query对象就受该钩子的控制。

add_action( 'pre_get_posts', 'hx_set_pagesize');
function hx_set_pagesize( $query ) {
    $num_per_page = 12;
    if ( is_archive() ) {
        $query->set( 'posts_per_page',  $num_per_page);
    }
}

直接上代码看效果,这时候只要你打开的是文章归档页面,你的分页控制将会被设置为12篇一页,是不是很厉害,你不需要操作任何地方设置,直接从主题函数中定义一个钩子就改变页面数据。

那么这么做的用途是什么呢?比如你的wordpress主题有特定的页面要显示特定的数据,就可以将特定的页面id放进来做判断,也可以根据特定的用户来做特定的处理,比如说新注册的用户组只能看到文章的一半内容,可以用来做付费内容控制。

再往大了说可以根据这个钩子来做一个插件,做成一个内容付费也是可以的。

我爱主题网 自2012
主题:260+ 销售:1000+
兼容浏览器