新しいWordPressマルチサイトインスタンスを設定していますが、スタックのいくつかの問題を解決しています。現在最も重要なこととして、ユーザー登録メールが何らかの理由で配信されていません。その結果、アクティブ化に必要な確認メールが失われるため、複数のユーザー名が行き詰まっています。
今のところ、確認メールなしで手動でこれらのユーザー名を登録したいのですが、登録しようとすると、名前が予約されており、数日後に利用可能になるというエラーが表示されます。予約を解除するにはどうすればよいですか?
新しいWordPressマルチサイトインスタンスを設定していますが、スタックのいくつかの問題を解決しています。現在最も重要なこととして、ユーザー登録メールが何らかの理由で配信されていません。その結果、アクティブ化に必要な確認メールが失われるため、複数のユーザー名が行き詰まっています。
今のところ、確認メールなしで手動でこれらのユーザー名を登録したいのですが、登録しようとすると、名前が予約されており、数日後に利用可能になるというエラーが表示されます。予約を解除するにはどうすればよいですか?
回答:
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
/ 1
列active
があります。これは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番目の引数(配列)を使用できます。$_POST
ed値はまだサニタイズする必要があることに注意してください。ヒント:も使用できますuser_email
。
global $wpdb;
$wpdb->delete(
$wpdb->signups,
array( 'user_login' => 'some_login', ),
array( '%s', )
);
特定のユーザーのデータベースでサインアップを削除するための簡単な解決策が必要な場合、これはあなたが望むことをするはずです:
/**
* 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リポジトリの「ユーザーアクティベーションキー」と呼ばれるプラグインを使用して、メールが送信されない理由を突き止めながら、この問題を管理することもできます。マルチサイトのユーザーのアクティベーションキーを手動で削除または承認できます。