ボットは徐々にゆっくりと私たちの存在を引き継いでおり、最大のキャプチャやガードさえもが失敗するでしょう。その結果、大量のスパムアカウントが削除される必要があります。
Wp-admin経由でこれらを手動で削除するのは面倒です。これらを素早く削除する方法はありますか?
はい。これを行うにはさまざまな方法があります。主に、 wp_delete_user() 関数に取り組む必要があります。
あなたの最初の仕事、そしてトリッキーな仕事は、どのアカウントがスパムで、どれが本物であるかを識別することです。あなたのサイトが定期的に新しいユーザーを獲得するなら、これはかなり冒険になることができます。
次の例では、ユーザーのemail
アカウントとmeta_data
の2つの値をターゲットにしています。
この場合、電子メールアドレスを解釈することによって、それがスパムアカウントであるかどうかがわかります。それでは、配列にリストを追加しましょう。
$emails = array(
'[email protected]',
'[email protected]',
'[email protected]',
);
次に、points
という名前のカスタムユーザーメタデータがあります。
$meta_key = 'points';
そして私たちの場合、メタキーの値が10
であれば、間違いなくスパムユーザーであることがわかります。そこで値を設定します。
$meta_key = 10;
それでは、それを関数にまとめましょう。
function wpse_delete_users_by_email($emails, $meta_key, $meta_value) {
if (!is_array($emails)) return;
foreach ($emails as $email) {
// get user data via email
$user = get_user_by( 'email', $email );
$user_id = $user->ID;
$user_email = $user->user_email;
// get
$meta_data = get_user_meta($user_id, $meta_key, TRUE);
// if meta data equals the meta value
if ($meta_data == $meta_value) {
// confirm that emails match
if ($user_email == $email) {
// must include this, or it will throw a 'call to undefined function' error
require_once(ABSPATH.'wp-admin/includes/user.php' );
// delete spam user
wp_delete_user( $user_id );
// display results
echo '<br>' . $email;
}
}
}
}
単純なものですが、時々スパムやボットを扱うとき、頭痛が少なくなることは価値があります。