Intereting Posts
Как выполнить итерацию по запросу wpdb-> update или query? Инструкции / Правила Внутри текстовой области Скрыть защищенные паролем сообщения в admin Непервалютная пользовательская таксономия не найдена Как гиперссылка содержимого с страницы архива с пользовательским пост-типом запрос для создания продуктов woocommerce из изображений Есть ли крючки для всплывающего окна с включенным изображением? Настройка WordPress для правильной работы с перенаправлением прокси домена Предполагаю ли я создавать дочернюю тему для каждой темы, которую я использую? set_role не влияет Моя функция в стиле enqueue admin не работает из-за? = Ver Настройщик WordPress допускает разрыв строки проблемы безопасности при использовании html data- * attribute для l10n? Сохраняется ли использование eval для метода обратного вызова jQuery, поступающего из базы данных? Как разобрать пользовательский URL (на сайте WP) и получить параметры, переданные этому URL-адресу

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

Solutions Collecting From Web of "Удаляет ли вы потерянные документы wp_postmeta?"

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

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

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

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