我现在无法编写代码,但有一个想法
一千篇帖子相当多,但如果你一次从db中检索所有帖子,那就更重要了。如果您有一万个帖子,其中只有十个或二十个在整个重新标记操作之后没有标记,那该怎么办。这可能会成为一个巨大的查询,您可能会遇到超时的危险
我建议如下:
如果此操作仅用于重新标记而无需分页,请使用get_posts
. WP_Query
返回大量不必要的信息。
在任何给定时间检索可管理数量的标签,比如说一次检索100个标签,直到完成为止。这不仅可以更快地加载,而且您的列表也不会太多。如果愿意,您也可以对列表分页,但为了不让用户感到不知所措,我不会这样做。坚持一页。
要正确管理和检索没有标签的帖子,您首先需要获得所有标签的列表。这可以通过函数简单地完成get_tags()
. 您很可能只需要从返回的标记对象数组中获取ID。为此,您可以利用wp_list_pluck
然后,可以在查询中使用此选项来排除所有附加了标记的帖子。您可以使用tag__not_in
参数这将只检索现在没有任何标签的帖子
这里是一个概念查询(注意:未测试,如前所述,只有一个概念)
$tags = get_tags();
$tag_ids = wp_list_pluck( $tags, \'term_id\' );
$args = array(
\'posts_per_page\' => 100,
\'tag__not_in\' => $tag_ids
);
$query = get_posts( $args ); // Use which suits your best, get_posts or WP_Query
// $query = new WP_Query( $args );
// YOUR POST LOOP