Intereting Posts
wordpress get_post_meta дает только первое значение Стиль текста перед <! – больше -> в single.php Опубликовать категории для конкретного автора в данной статье Сохранять пустое пространство на странице Как показать определенные мета-ключи всех сообщений в панели администратора? Объявление администратора WordPress Я хочу создать фильтр для строки запроса, возможно ли это? Не удается загрузить размер с моего хостинга Первичное редактирование с настраиваемыми полями? get_posts игнорирует «категорию» и отображает все сообщения Запросить сообщения только в том случае, если текущая страница не выгружается? Показать пользовательские позиции таксономии WordPress, основанные на выбранном элементе из другой пользовательской таксономии Игнорирует post_type, когда нет результатов Редактировать ссылку на уменьшенное изображение и изменить HTML-код изменить url для статических файлов в / wp-admin с URL-адресом cdn

Удаляет ли вы потерянные документы wp_postmeta?

Я использую woocommerce как корзину покупок на сайте wordpress. Продукты и вариации продукта хранятся как записи в таблице wp_posts. Каждый из этих вариантов имеет aprox. 15-20 связанных записей в wp_postmeta (для хранения различных сведений об этом продукте, таких как SKU или цена).

Я обнаружил, что многие варианты (более 600 в этом случае) не имеют ассоциированного родительского продукта. Ну, они делают, но этот родительский продукт больше не существует. Я нашел следующее, чтобы удалить эти сироты из wp_posts:

DELETE o FROM `wp_posts` o LEFT OUTER JOIN `wp_posts` r ON o.post_parent = r.ID WHERE r.id IS null AND o.post_type = 'product_variation' 

Я думаю, что это сработает для этой цели. Но он все равно оставит много записей в таблице wp_postmeta.

Мой вопрос: могу ли я удалить любую запись из wp_postmeta, post_id которой не соответствует существующей записи в wp_posts. Я имею в виду, я знаю, что могу это сделать, но есть ли потенциальная ошибка при удалении этих сиротских записей из wp_postmeta. То есть, если метаинформация соответствует вариации продукта, которая не существует. могу ли я безопасно удалить его?

Другой способ сделать это (не лучше, но проще следовать):

 DELETE * FROM wp_postmeta WHERE post_id NOT IN (SELECT ID FROM wp_posts) 

Очевидно, изменение префиксов из «wp_» в зависимости от используемой вами установки

Вам просто нужно сделать RIGHT JOIN чтобы запросить строки, имеющие значения NULL