2014-08-27 1 views
0

Я хотел спросить, есть ли возможность полностью исключить, например, всех авторов пользователей и их сообщение после x дней с даты регистрации. Например, если автор после его регистрации напишет сообщение, после x дней, как автор, так и почта будут удалены навсегда автоматически.Удалите всех авторов и их сообщение автоматически после x дней в wordpress

+0

Как насчет работы cron? Возможно, есть более элегантные варианты. –

+0

Благодарим вас за немедленный ответ, и мне очень жаль, если я плохо себя зарекомендовал. WP-Cron отлично выполняет функции, но я хочу исключить «каждого автора через 365 дней с даты его регистрации». Пример: Автор регистрирует 2014/01/01; Автор автоматически удаляется 2015/01/01. Автор регистрируется 01/06/2014; Автор автоматически удаляется 01/06/2015. Автор записывает 03/01/2014; Автор автоматически удаляется 03/01/2015. и т. Д. Возможно ли это? спасибо! – Claudio

+0

Исследования [здесь] (http://wordpress.stackexchange.com/questions/tagged/wp-cron) и [здесь] (http://wordpress.stackexchange.com/search?q=delete+user+is%3Aquestion) – brasofilo

ответ

0

Я нашел решение. Как поясняется в этом сообщении Auto delete Wordpress users according to time since registering?, , вставив следующий код, вы удаляете зарегистрированных пользователей более 30 дней.

if(!wp_next_scheduled('my_dailyClearOut')){
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');

К сожалению, не работает с "SELECT ID FROM", но работает с "DELETE FROM"

Working:

if(!wp_next_scheduled('my_dailyClearOut')) {
wp_schedule_event(time(), 'daily', 'my_dailyClearOut'); }
function my_clearOldUsers() { global $wpdb; $query = $wpdb->prepare("DELETE 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');

Теперь проблема заключается в том, что она также устраняет администратору.

Есть ли способ устранить только зарегистрированных пользователей с более чем 30 дней с определенной ролью (например, авторов)?

Или удалить всех пользователей, кроме Администратора и Редактора?

спасибо!

+0

Кроме того, я заметил, что удаляет только пользователя, но не удаляет сообщение и ассоциированный пользователь metà. Любая идея? – Claudio