2011-03-14 18 views
3

ユーザアクセスマネージャを使用した基本的なWordpress 3.1のセットアップでは、x日前のユーザを自動的に削除できますか?Wordpressユーザーを登録してから自動的に削除しますか?

この機能にはプラグインが見つかりませんでした。これを実装するにはどうしたらいいですか?例えば3日前のユーザーが毎日1回データベースから自動的に削除されるSQLまたはPHPクエリーを使用してcronジョブをセットアップすることはできますか?もしそうなら、誰かがどのように説明できますか?

ご協力いただきまして、ありがとうございます。

+0

これは、この質問にオンラインで利用できる唯一のリソースであるように思われます。 –

答えて

6

wp_usersテーブルのuser_registered列を見たいと思っています。 WordPressを使用しているので、MySQLを使用していると仮定します。その場合は、SQLでDATEDIFF()関数を使用して、何日前に登録したかを調べることができます。

30日(またはそれ以前)であるすべての人を削除するSQLは次のとおりです。

DELETE FROM `wp_users` 
WHERE datediff(now(), `user_registered`) >= 30 

あなたがしたい場合は、削除が影響を与えると思われるユーザーを参照し、そのクエリにSELECT * FROMDELETE FROMを置き換えることができます誰がクエリによって削除されるかをプレビューします。

これは、上記のSQLを実行するだけのPHPスクリプトかもしれませんが、あなたが選んだ言語を使ってcronジョブとして設定できます。次に、あなたのcrontabに次置くこ​​とによって、毎日深夜にそれを実行することができます:

0 0 * * * php ~/delete_expired_users.php 

あなたはcronジョブに新しいしている場合は、単に毎日(つまり*が示していることだ)でコマンドphp ~/delete_expired_users.phpを実行します時間0、分0(すなわち真夜中)。詳細な指示が必要な場合はお知らせください。

+0

ありがとう、これは私が探しているものとまったく同じです。それほど問題がなければ、より詳細な指示をすることができますか?私はsql/phpに精通していません。私はフロントエンドの開発者であり、クライアントはこれを持っているとかなり設定されています。もう一度感謝します。本当にありがたいです – Joel

+0

[このチュートリアル](http://onlamp.com/pub/a/php/2004/02/19/php_foundations.html)を見てみるといいでしょうデータベースに接続してクエリを実行するだけです。あなたがバックアップを取ることを確認してください! –

+0

そして、誰かがあなたの質問に答えると答えた場合は、その答えの横にある大きな緑色のチェックマークを押すだけで、それを受け入れたものとしてマークすることをお勧めします。 –

1

個人的には、Wordpressの内部機能をいくつか使用することをお勧めします。

最初はwp_delete_user()を使用します - これはユーザーレコードを削除するだけでなく、関連付けられたuser_metaと投稿をワイプしてデータベースをきれいにして清潔に保ちます。

wp_schedule_event() - wp-cronの機能の一部を使用することをお勧めします。現在のホストでcrontabを設定するための柔軟性やアクセス権がない場合は、これが望ましいかもしれません。

wp_schedule_event(time(), 'daily', 'my_dailyClearOut'); 

function my_clearOldUsers() { 
    global $wpdb; 

    $query = $wpdb->prepare("SELECT ID FROM $wpdb->users WHERE datediff(now(), user_registered) > 30"); 

    if ($oldUsers = $wpdb->get_results($query, ARRAY_N)) { 
     foreach ($oldUsers as $user_id) { 
      wp_delete_user($user_id[0]); 
     } 
    } 
} 

add_action('my_dailyClearOut', 'my_clearOldUsers'); 

これは私にとって現時点で使用しているトリックです。

それは「WP-cronの」機能は、標準のcrontabとしてない同じであることは注目に値します - 彼らは、ユーザーがサイトにアクセスしたときにのみ解雇ので、どこにも近く、標準のcronほど正確されています。ただし、この特定の機能については、これは問題ありません。

datediff()機能の@Samへのハットチップ - それはきれいです!

1

ページが読み込まれるたびにwp_schedule_event()が実行されるため、サイトが危険にさらされる可能性があることに注意してください。スケジュールされたイベントが既にあるかどうかを確認し、追加するだけでよいことを確認することをおすすめします。

if(!wp_next_scheduled('my_dailyClearOut')) { 
wp_schedule_event(time(), 'daily', 'my_dailyClearOut'); 
} 
関連する問題