Я нахожусь в процессе очистки сайта после его переноса с одной установки WP на установку WP с несколькими сайтами. Я заметил много-много повторяющихся настраиваемых полей для каждого сообщения. Я предполагаю, что это из старых версий плагинов, которые не проверяли поле перед добавлением другого. При миграции я удаляю эти плагины.
Могу ли я просто удалить эти поля в бэкэнде с помощью SQL или есть лучший способ?
SELECT *
FROM `wp_5_postmeta`
WHERE `meta_key` IN ("podPressPostSpecific", "aktt_tweeted", "podPressMedia")
Только используя DELETE
очевидно.
На этом сайте более 700 записей на 80 или около того постов.
Не уверен, в чем смысл последнего примера. Чем это отличается от работы в
update_
одиночку? Насколько я понимаю, документы формыupdate_
либо создают значение (если его нет), либо редактируют (если он есть), он все равно не может создать дубликат?..Знаешь что, ты абсолютно прав. Я никогда раньше не смотрел исходный код и просто отклонился от того, что сказал кодекс. Спасибо что подметил это!
Если вы не собираетесь использовать эти плагины, сделайте это. Нет причин держать их рядом. Прямой запрос SQL должен быть в порядке.
Связанный:
add_post_meta()
есть отличный аргумент, чтобы предотвратить эту проблему. Четвертый аргумент — логическое значение, указывающее, должна ли мета быть единственной:Источник: Добавить метаданные | Кодекс ВП
Если вы хотите удалить все поля, сделайте это прямо в базе данных или в админке. Но если вы хотите сохранить одну копию каждого поля и удалить только дубликаты, то это немного сложнее. Вы можете удалить прямо из базы данных, используя сложную инструкцию SQL, например:
Не забудьте изменить имя meta_key в обоих местах, если вы хотите удалить дубликаты для другого настраиваемого поля.
или вы можете использовать для этого php-скрипт. Пример: