Вы должны войти в систему или зарегистрироваться.

Я ищу код SQL, который я могу запустить из phpmyadmin, чтобы удалить всех зарегистрированных пользователей в блоге, у которых нет сообщений, связанных с ними.

<?php /** * Plugin Name: Delete Non Authors */ function delete_non_authors() { global $wpdb; $non_authors = $wpdb->get_col( "SELECT DISTINCT $wpdb->users.ID FROM $wpdb->users LEFT JOIN $wpdb->posts ON $wpdb->users.ID = $wpdb->posts.post_author WHERE $wpdb->posts.ID IS NULL" ); foreach ($non_authors as $user_ID) wp_delete_user($user_ID); } register_activation_hook(__FILE__, 'delete_non_authors'); ?> 

Поместите это в файл, назовите его что-то вроде delete-non-authors.php , загрузите его в свою папку плагинов, активируйте, и все готово! (Затем вы можете деактивировать).

Идея заключается в том, что мы получим всех авторов, у которых есть сообщение, и удалите пользователя, который не в этом списке! Если вы собираетесь использовать только SQL, запустите эту команду на PHPMYADMIN:

 DELETE FROM wp_users WHERE ID NOT IN (SELECT DISTINCT post_author FROM wp_posts) 

Если вы собираетесь использовать код, используйте это:

 global $wpdb; $wpdb->query("DELETE FROM {$wpdb->users} WHERE ID NOT IN (SELECT DISTINCT post_author FROM {$wpdb->posts}) ") 

У меня нет готового доступа к коду, поэтому я не хочу получать слишком конкретные данные и цитировать неправильные функции, но, вероятно, лучше было бы сделать это с помощью PHP и MySQL, а не просто удалять записи из Таблица wp_users. Если вы сделаете это через PHP и используете встроенные функции WordPress, он сделает это чисто и удалит пользователей, не оставив осиротевших данных в таблице wp_usermeta и т. Д.