在wordpress中以编程方式删除用户

时间:2016-07-17 09:55:45

标签: wordpress

在Wordpress中,如果我有用户ID,如何以编程方式删除用户?

我正在使用以下代码。

$user_id = 4;
$roles = array();
$user = get_userdata($user_id);
$capabilities = $user->{$wpdb->prefix . 'capabilities'};

if (!isset($wp_roles))
    $wp_roles = new WP_Roles();

foreach ($wp_roles->role_names as $role => $name) :

    if (array_key_exists($role, $capabilities))
        $roles[] = $role;

endforeach;

if (!in_array("administrator", $roles)) {
    if (wp_delete_user($user_id)) {
        echo 'User deleted' . $user_id;
        echo '<br>';
    }
}

这对我不起作用。请帮帮我,我错了?

4 个答案:

答案 0 :(得分:1)

试试这个

rows[i].address = encodedAddress;

答案 1 :(得分:0)

我找到了解决问题的解决方案。我刚刚在代码中添加了一行。 现在更新了以下代码。

require_once(ABSPATH.'wp-admin/includes/user.php' );
$user_id = 4;
$roles = array();
$user = get_userdata($user_id);
$capabilities = $user->{$wpdb->prefix . 'capabilities'};
if (!isset($wp_roles))
    $wp_roles = new WP_Roles();
foreach ($wp_roles->role_names as $role => $name) :
    if (array_key_exists($role, $capabilities))
        $roles[] = $role;
endforeach;
if (!in_array("administrator", $roles)) {
    if (wp_delete_user($user_id)) {
        echo 'User deleted' . $user_id;
        echo '<br>';
    }
}

现在正在为我工​​作。

答案 2 :(得分:0)

您可以尝试以下

global $wpdb;
$ids = $wpdb->get_col('SELECT `user_id` FROM `' . $wpdb->prefix . 'usermeta` WHERE `meta_key` = \'wp_user_level\' AND `meta_value` < 8;');
if (count($ids) > 0)
{
    foreach ($ids as $id)
    {
        if (wp_delete_user($id))
        {
            echo 'User deleted' . $id;
            echo '<br>';
        }
    }
}

使用此table作为用户级别的参考

答案 3 :(得分:0)

对于WordPress多站点,您可以非常简单地从SQL命令行中删除用户。

在下面的示例中,user_id为838,网站#为20:

delete from wp_usermeta where user_id = 838 and meta_key in ('wp_20_capabilities', 'wp_20_user_level');

那就是它!