我需要一次查询很多帖子。在这里,很多事情和性能都非常重要——事情进展缓慢会给我带来很多糟糕的评论,但稍微减少一下WP的开销可能会给我带来更快的结果,这需要权衡。
长话短说,这是我的最后一段代码,它运行得很快,而且我的意思是,它确实运行得很快,内存占用也很小,但没有开销,这意味着,在调用时没有通常会触发的操作wp_update_post
:
$posts_to_hide = new \\WP_Query([
\'post_type\' => \'post\',
\'fields\' => \'ids\',
\'posts_per_page\' => \'-1\',
]);
global $wpdb;
while ( $next_posts = array_splice( $posts_to_hide->posts, 0, 10 ) ) {
foreach( $next_posts as $index => $id ) {
$wpdb->query( "UPDATE $wpdb->posts SET post_status=\'draft\' WHERE ID=$id");
}
}
如果我正在更新帖子的状态,您通常会:
foreach( $next_posts as $index => $id ) {
wp_update_post( [\'ID\' => $id, \'post_status\' => \'draft\' ] );
}
但这一变化幅度应该会变慢。
事实是,我的环境(即使它将部署到数千个站点)非常特殊,并且受到高度控制-这些帖子是我创建的,这些帖子不需要外部力量来“美化”它们,但如果发生了,那完全没关系,所以他们准备好了在不破坏体验的情况下进行攻击。
**除了我的插件放入的帖子,我永远不会查询任何其他帖子(我的WP\\u查询更复杂,它只返回我的插件创建的帖子)。时期这些帖子,考虑到我的插件的范围,不需要其他插件所做的修改/改进,例如,SEO插件可能会更改我的标题/结构,但这并不是必需的,如果发生这种情况,那么在我的插件将这些帖子插入系统后,上面的这个函数将立即运行,因此,没有竞争条件——帖子被导入,这将运行,没有两条路可以绕过它。此外,这些帖子是“模拟帖子”,客户对此非常理解。
因此,根据我的情况,我可以跳过WP提供的所有挂钩吗?
我特别要说的是,错过了wp_insert_post
所使用的wp_update_post
. 任何与之挂钩的插件/功能都不会看到我的帖子被更新。