如果我们批量给一些文章设置某个分类的时候,WordPress 都会执行 wp_update_term_count_now
函数来计算分类的使用数,这个函数会产生 3 条 SQL,如果给 20 篇文章设置分类的话,那么就会产生 60 条 SQL,所以在批量设置的时候经常产生大量的 SQL 请求,会造成数据库连接数过多。
这个时候我们可以使用 wp_defer_term_counting
函数来提高批量设置分类信息的效率,这个函数可以让我们批量操作完成之后,再进行分类使用数量统计,比如我做的图片集插件,批量给图片设置分类的时候,我就是使用这个方法提高效率的。
// 先不统计分类使用数
wp_defer_term_counting(true);
foreach($post_ids as $post_id){
$result = wp_set_post_terms($post_id, $collection_ids, 'collection', true);
if(is_wp_error($result)){
return $result;
}
}
// 全部图片设置完分类在统计分类使用数
wp_defer_term_counting(false);