user
  • 0
Гуру

Мне нужна команда SQL для удаления определенных авторов и всех связанных с ними сообщений

  • 0

К сожалению, у меня есть авторы с большим количеством нечитаемых/спамовых постов (некоторые из них тысячи)

Я попытался удалить через администратора, но это медленный болезненный процесс — есть ли у кого-нибудь конкретная команда SQL, которую я могу использовать, которую можно редактировать для каждого имени автора и удалять все сообщения, связанные с этим автором?

заранее спасибо

Share
  1. Это удаляет сообщения и все связанные метаданные сообщений:

    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 на идентификационный номер автора сообщения, которого вы хотите удалить.

    • 0
  2. Вы также можете массово удалить сообщения автора, используя файл 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;
    

    После этого нужно просто удалить авторов

    • 0
  3. Не команда 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);

    • 0
  4. Я не эксперт по 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>

    Надеюсь, это поможет!

    • 0

Оставить ответ

You must login to add an answer.