只需查询这两个术语并增加posts_per_page
计数
$category_query = new WP_Query([
\'posts_per_page\' => 36,
\'post_type\' => \'product\',
\'tax_query\' => [
[
\'taxonomy\' => \'product_cat\',
\'terms\' => [ 120, 121 ],
\'field\' => \'id\',
\'include_children\' => false
]
]
]);
EDIT:
据我所知,用多个术语运行查询并保证每个术语有18个(假设每个术语至少有18个项目)是不可能的。
我的建议是运行两个单独的查询,将结果合并在一起,然后缓存帖子列表。这将允许您仅在缓存失效后才访问数据库。
示例:(为了简洁起见,我省略了args,因为唯一改变的是术语id。)
// Look for the cached posts
$merged_items = get_transient( \'my_category_query\' );
// If we don\'t have them, get and cache them
if( false === $merged_items ) {
$cat_query_one = new WP_Query( $args_with_the_first_term );
$cat_query_two = new WP_Query( $args_with_the_seccond_term );
$merged_items = array_merge( $cat_query_one->posts, $cat_query_two->posts );
set_transient( \'my_category_query\', $merged_items, DAY_IN_SECONDS );
}
// Display your posts
foreach ( $merged_items as $post ) {
// ...
}
需要考虑的是,使用
fields => \'ids\'
参数这将加快查询速度,而且您还可以使用ID检索要显示的大部分数据。
WP\\U查询的其他一些性能提示:
\'no_found_rows\' => true
: 当不需要分页时,如果不进行计算来确定查询总共有多少篇文章,那么这将非常有用\'update_post_meta_cache\' => false
: 不使用post meta时很有用update_post_term_cache\' => false
: 在不使用分类术语时有用
当添加了会影响此查询的新内容时,还应该刷新缓存。