保留中のユーザー名登録を予約解除するにはどうすればよいですか?


9

新しいWordPressマルチサイトインスタンスを設定していますが、スタックのいくつかの問題を解決しています。現在最も重要なこととして、ユーザー登録メールが何らかの理由で配信されていません。その結果、アクティブ化に必要な確認メールが失われるため、複数のユーザー名が行き詰まっています。

今のところ、確認メールなしで手動でこれらのユーザー名を登録したいのですが、登録しようとすると、名前が予約されており、数日後に利用可能になるというエラーが表示されます。予約を解除するにはどうすればよいですか?

回答:


13

DBアクセス層と行の削除

WordPressは、このwpdbクラスを使用して、を使用したデータベースレイヤーへのアクセスを管理しますglobal $wpdb。このクラスは、delete()テーブルから行を削除するためのメソッドを提供します。

$wpdb->delete( $table, $where, $where_format = null );

マルチサイトテーブルとアクティベーションキー

WordPressは持っているいくつかのMUの特定のテーブル 1は、{$wpdb->prefix}signups(自分の中のプレフィックスセットwp-config.phpファイルを)。ここでテーブルスキーム。ユーザーアカウントのアクティブ化を担当するのはです activation_key。これは、ユーザーがメールのリンクをクリックした後に設定されます。その後、activatedキーにdatetime値が設定されます。アカウントがアクティブ化される前のデフォルト値は0000-00-00 00:00:00(デフォルトを照会する必要がある場合)です。また、プロセスにはtinyint/ 1activeがあります。これは1、ユーザーがアクティブである場合に設定されます。

コア自体はを使用しwpmu_activate_signup()ます。いくつかの例を見てください。1つは、ユーザーエントリを更新してアクティブ化する次のものです。

$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', )
);

WP_List_Table文字列を使用していることを示すために(nの拡張などの)これらの要求を実行するために(n admin)形式を使用している場合は、3番目の引数(配列)を使用できます。$_POSTed値はまだサニタイズする必要があることに注意してください。ヒント:も使用できますuser_email

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

8

特定のユーザーのデータベースでサインアップを削除するための簡単な解決策が必要な場合、これはあなたが望むことをするはずです:

/**
 * 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リポジトリの「ユーザーアクティベーションキー」と呼ばれるプラグインを使用して、メールが送信されない理由を突き止めながら、この問題を管理することもできます。マルチサイトのユーザーのアクティベーションキーを手動で削除または承認できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.