如何取消保留挂起的用户名注册?

时间:2014-09-08 作者:Kaelin Colclasure

我正在设置一个新的WordPress多站点实例,并且仍在解决堆栈中的一些问题。目前最重要的是,由于某种原因,用户注册电子邮件没有送达。因此,由于激活用户名所需的确认电子邮件丢失,一些用户名陷入了困境。

目前,我只想手动注册这些用户名,而不需要确认电子邮件,但当我尝试注册时,会出现一个错误,即该名称是保留的,可能在几天后可用。如何取消预订?

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

数据库访问层&;删除行WordPress使用wpdb 类来管理对数据库层的访问global $wpdb. 该类提供了一个名为delete() 要从表中删除行,请执行以下操作:

$wpdb->delete( $table, $where, $where_format = null );
多站点表格(&H);WordPress具有激活键some MU specific tables, 一个在哪里{$wpdb->prefix}signups (前缀设置在wp-config.php 文件)。Tables scheme here. 负责激活用户帐户的是activation_key, 在用户单击邮件中的链接后设置。之后activated 键将设置为datetime 价值激活帐户之前,默认值为0000-00-00 00:00:00 (如果需要查询默认值)。在这个过程中tinyint/1active, 设置为1 如果用户处于活动状态。

核心本身使用wpmu_activate_signup(). 请看一些例子。一个是更新用户条目以激活它的以下内容-为可读性而重新编写。

$wpdb->update(
    $wpdb->signups,
    array(
        \'active\'    => 1,
        \'activated\' => current_time( \'mysql\', true ),
    ),
    array( \'activation_key\' => $key, )
);
针对尚未激活的帐户建立查询只需让WP做一些艰苦的工作:

global $wpdb;
$wpdb->delete(
    $wpdb->signups,
    array( \'user_login\' => \'some_login\', )
);
如果使用(n admin)表单来执行这些请求(例如,扩展WP_List_Table) 指示您正在使用字符串。请记住,您仍应进行消毒$_POSTed值。提示:您可以使用user_email

global $wpdb;
$wpdb->delete(
    $wpdb->signups,
    array( \'user_login\' => \'some_login\', ),
    array( \'%s\', )
);

SO网友:DrewAPicture

如果您想要一个快速解决方案来删除特定用户在数据库中的注册,这应该满足您的需要:

/**
 * Delete a row in the signups table for a given username.
 *
 * @param string $user_login Username.
 * @return bool Whether the signup row was successfully deleted.
 */
function delete_activation_key_by_user( $user_login ) {
    global $wpdb;

    $success = false;

    if ( false !== $wpdb->delete( $wpdb->signups, array( \'user_login\' => sanitize_text_field( $user_login ) ) ) ) {
        $success = true;
    }
    return $success;
}

var_dump( delete_activation_key_by_user( \'the_username\' ) );
// bool(true|false)
你也可以在WordPress中使用插件。org-repo调用了“用户激活密钥”来管理这个问题,同时你也在弄清楚为什么不发送电子邮件。它允许您手动删除或批准多站点中用户的激活密钥。

结束

相关推荐

Multisite and plugins options

我需要更多关于get_site_option(), update_site_option() 和add_site_option().在codex中,他们说它与单次安装相同,只是在多站点中,它返回网络范围的选项。好吧,但我对这一点感到困惑:这是否意味着一旦设置了网络范围选项,所有站点的选项都是相同的?还是每个站点都会覆盖它?我的意思是如果我这样做: update_site_option(\'option_group\', \'default_options());// default_options() r