У меня, к сожалению, есть авторы с множеством нечитаемых / спам-сообщений (тысячи некоторых из них)
Я попытался удалить администратор, но его медленный болезненный процесс – есть ли у кого-то конкретная команда SQL, которую я могу использовать, которую можно редактировать для каждого имени автора и удалить все сообщения, связанные с этим автором?
заранее спасибо
Вы также можете массово удалить записи автора, используя файл php, например:
require('wp-blog-header.php'); global $wpdb, $current_site; query_posts('author=11,161,23,6'); //the ID authors while ( have_posts() ) : the_post(); wp_delete_post( $post->ID, true ); endwhile;
После этого вам просто нужно удалить авторов
Это удаляет сообщения и все связанные метаданные сообщения:
DELETE a,b,c FROM `wp_posts` a LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id) WHERE a.post_author = '0';
Замените 0 идентификационным номером для post_author, который вы хотите удалить.
Не команда SQL, а простая функция, которая получает идентификатор автора и удаляет все его сообщения, таким образом вы удаляете мета-сообщение из этих сообщений.
function delete_posts_by_author($author_ID){ $args = array('author' => $author_ID, 'posts_per_page' => -1); $the_query = new WP_Query( $args ); if ( have_posts() ) { while ( have_posts() ) { the_post(); wp_delete_post( $post->ID, true ); } } }
delete_posts_by_author(3);
: delete_posts_by_author(3);
Я не эксперт по SQL, поэтому перед его использованием обязательно протестируйте этот код (совет: замените DELETE
на SELECT *
для тестирования). Обязательно замените указанные разделы правильной таблицей и информацией пользователя. И всегда делайте резервную копию, прежде чем возиться с вашей базой данных!
Удаляет сообщения для определенного пользователя:
DELETE FROM <YOUR WORDPRESS POSTS TABLE> p, <YOUR WORDPRESS USERS TABLE> u WHERE u.ID = <USER ID NUMBER YOU WANT TO REMOVE>
Удаляет почтовую мета для определенного пользователя:
DELETE FROM <YOUR WORDPRESS POSTMETA TABLE> p, <YOUR WORDPRESS USERS TABLE> u WHERE u.ID = <USER ID NUMBER YOU WANT TO REMOVE>
Удаляет учетную запись пользователя:
DELETE FROM <YOUR WORDPRESS USERS TABLE> WHERE ID = <USER ID NUMBER YOU WANT TO REMOVE>
Удаляет метафайл пользователя:
DELETE FROM <YOUR WORDPRESS USERMETA TABLE> WHERE user_id = <USER ID NUMBER YOU WANT TO REMOVE>
Удаляет любые комментарии от этого пользователя:
DELETE FROM <YOUR WORDPRESS COMMENTS TABLE> where user_id = <USER ID NUMBER YOU WANT TO REMOVE>
Надеюсь, это поможет!