Как удалить осиротевшие строки таблицы wp_postmeta?

Обнаружил на сайте что в таблице wp_postmeta есть строки которые не связаны со строками wp_posts. Видимо ранее установленные плагины наследили.

Теперь задача одним движением удалить все строки из wp_postmeta, которые никак не связаны с полями wp_posts (осиротевшие строки).

Помогите составить грамотный SQL запрос. Спасибо!

0
Гость
10.2 года назад
  • 1
    Kama 9822

    Запустите такой запрос:

    DELETE pm FROM wp_postmeta pm 
    LEFT JOIN wp_posts wp ON wp.ID = pm.post_id
    WHERE wp.ID IS NULL

    В PHP будет выглядеть так (нужно один раз выполнить код, можно добавить в functions.php потом удалить):

    global $wpdb;
    
    $sql = "DELETE pm FROM $wpdb->postmeta pm 
    LEFT JOIN $wpdb->posts wp ON wp.ID = pm.post_id
    WHERE wp.ID IS NULL";
    
    if( $wpdb->query( $sql ) )
    	echo 'Готово';
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация