pre_get_posts是WordPress中的一个重要钩子,用于修改查询参数,从而影响主循环(main query)的结果。通过使用pre_get_posts钩子,可以在不修改主题文件的情况下对查询进行自定义。
pre_get_posts的用法如下:
1. 添加钩子
可以将钩子添加到主题的functions.php文件中,或者自定义插件的文件中。添加钩子的代码如下:
add_action('pre_get_posts', 'custom_pre_get_posts');
function custom_pre_get_posts($query) {
// 将修改查询参数的代码放在这里
}
2. 修改查询参数
在custom_pre_get_posts函数中,可以使用$query参数来修改查询参数。常用的方法有:
- 使用is_main_query()方法判断当前是否为主循环:
if ( $query->is_main_query() ) {
// 修改主循环的查询参数
}
- 使用set方法修改查询参数:
$query->set('param', 'value');
可以修改的查询参数包括:
- 'posts_per_page':每页显示的文章数量
- 'category_name':按分类名称筛选文章
- 'tag':按标签筛选文章
- 'author':按作者筛选文章
3. 示例
下面是一个使用pre_get_posts钩子修改查询参数的示例代码:
add_action('pre_get_posts', 'custom_pre_get_posts');
function custom_pre_get_posts($query) {
if ( $query->is_main_query() && $query->is_category() ) {
$query->set('posts_per_page', 10);
}
}
这段代码将在分类页面(is_category()为真)中修改每页显示的文章数量为10篇。
总结:
pre_get_posts钩子可以用于修改主循环的查询参数,从而影响页面的显示结果。通过使用pre_get_posts钩子,可以实现对主题的自定义,而无需修改主题文件。
0 个评论