Wordpress SQL命令用于删除特定作者的所有帖子和所属数据

时间:2014-03-07 10:59:20

标签: php sql wordpress

我需要delete all posts的SQL查询(自定义帖子类型)以及属于特定post author的帖子的所有数据。

我们讨论的不仅仅是20,000个帖子,因此我无法使用WP管理员端的批量删除功能。

感谢您的帮助! 此致

1 个答案:

答案 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: 请注意,该功能还会删除与该帖子相关的所有评论和任何其他元关系