批量发布WordPress草案页面

问题描述

我正在一个网站上工作,该网站通过WP CSV插件创建了10万个wordpress页面。但是草稿中保留了约6万页。

如何批量发布这些页面

如果我尝试直接从数据库更改为“ post_status”,则页面的永久链接将保留为空,并重定向首页

如果我尝试增加每页的项目数量,然后批量发布;在这种情况下,限制仅保持为最小值400,并且在处理400中也花费了太多时间。

有没有为此优化的解决方案?

解决方法

如果您没有对主机的Shell访问(SSH)并且无法进一步增加PHP的max_execution_time,则可以执行以下操作。 创建一个PHP文件,例如WP根目录中的bulk_publish.php,包含以下代码:

<?php

require_once('./wp-load.php');

$post_type = 'page'; // Change,if you need to handle another post type
$posts_per_page = 400; // if this is too much,reduce it

$posts = get_posts([
  'post_type' => $post_type,'posts_per_page' => $posts_per_page,'post_status' => ['draft'],'lang' => '',]);

if (count($posts) > 0) {
  foreach ($posts as $post) {
    wp_update_post([
      'ID' => $post->ID,'post_status' => 'publish',]);
  }
  wp_redirect('/bulk_publish.php');
} else {
  echo "Done.";
}

这将一次发布$posts_per_page页,迭代draft个状态帖子,然后重定向回bulk_publish.php。这样可以确保您避免点击max_execution_time。您可以尝试增加此数字。如果您需要处理6万个页面,则浏览器有时会抱怨重定向过多。在这种情况下,只需刷新一次即可,让它执行下几个迭代,直到再次抱怨。输出“完成”后,就完成了。

然后,从服务器上删除bulk_publish.php文件。