我需要delete all posts
的SQL查询(自定义帖子类型)以及属于特定post author
的帖子的所有数据。
我们讨论的不仅仅是20,000
个帖子,因此我无法使用WP管理员端的批量删除功能。
感谢您的帮助! 此致
答案 0 :(得分:1)
首先,我不建议以这种方式删除它们(通过直接在admin中运行SQL),因为postmeta表将提供有关将保留在数据库中的帖子的更多信息。您应该在循环中使用wp_delete_post函数。我会告诉你如何。
其次:您需要确保WP分配足够的内存来处理这样的循环。 codex信息是指wp-config.php,但在最新版本的wordpress中,它位于安装的根文件夹中的wp-settings.php中。 http://codex.wordpress.org/Editing_wp-config.php#Increasing_memory_allocated_to_PHP删除帖子后,您可以将限制重置为之前的限制。
第三:如果您无法在后端的自定义插件中运行此代码,则可以在前端执行此操作。这个功能可以做到:
global $wpdb;
$evil_author = THE_ID_OF_THE_AUTHOR_WHOSE_POSTS_YOU_WANNA_BUZZIATE;
$them_posts = $wpdb->get_results("SELECT * FROM $wpdb->posts WHERE AND post_author = $evil_author" AND post_type = "my_post_type"); // Replace my_post_type by the post type you want
foreach ( $them_posts as $post_die )
{
wp_delete_post( $post_die->ID, true ); // Bypasses Trash and deletes all the posts
} // ************ BE SUPER CAREFUL BECAUSE THIS IS IRREVERSIBLE. So, BACK UP **************
NB: 请注意,该功能还会删除与该帖子相关的所有评论和任何其他元关系 。