用于删除未连接任何帖子的作者的代码

时间:2010-12-13 作者:OperaManiac

我正在寻找可以从phpmyadmin运行的SQL代码,以删除博客上没有任何相关帖子的所有注册用户。

3 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

<?php

/**
 * Plugin Name: Delete Non Authors
 */

function delete_non_authors()
{
    global $wpdb;
    $non_authors = $wpdb->get_col(
        "SELECT DISTINCT $wpdb->users.ID FROM $wpdb->users
        LEFT JOIN $wpdb->posts ON $wpdb->users.ID = $wpdb->posts.post_author
        WHERE $wpdb->posts.ID IS NULL"
    );

    foreach ($non_authors as $user_ID)
        wp_delete_user($user_ID);
}
register_activation_hook(__FILE__, \'delete_non_authors\');

?>
将其放入文件中,命名如下delete-non-authors.php, 上传到你的插件文件夹,激活,你就完成了!(然后可以取消激活)。

SO网友:kureikain

我们的想法是,我们将获得所有有一些帖子的作者,并删除不在该列表中的用户!如果只使用SQL,请在PHPMYADMIN上运行以下命令:

DELETE FROM wp_users WHERE ID NOT IN (SELECT DISTINCT post_author FROM wp_posts)
如果要在代码中执行此操作,请使用:

global $wpdb;
$wpdb->query("DELETE FROM {$wpdb->users} WHERE ID NOT IN (SELECT DISTINCT post_author FROM {$wpdb->posts})
")

SO网友:danhgilmore

我没有现成的代码访问权限,所以我不想太具体,引用错误的函数,但最好通过PHP和MySQL来完成,而不仅仅是从wp\\U users表中删除记录。如果您通过PHP并使用WordPress的内置函数进行操作,它将干净地完成操作并删除用户,而不会在wp\\u usermeta表中留下孤立的数据,等等。

结束

相关推荐

为什么WordPress从MySQL获得的帖子来自虚拟主机名,而不是直接主机名?

我正在Mac上开发一个WordPress网站,运行OS X 10.6.4。在开发过程中,我使用OS X的内置Apache服务器在本地运行该站点。我已经安装了WordPress,并将其连接到OS X的MySQL,没有问题。该网站似乎运行良好,我可以发布、编辑等。WordPress安装在一个名为~/Sites/mysite.dev.我还定制了.hosts 文件和Apachehttpd-vhosts.conf 文件,以重定向对mysite的请求。请转到这个文件夹。所以当我进去的时候http://mysite.d