Как удалить все мета-записи с определённым ключом (meta_key) из базы данных

В этом уроке покажу вам довольно удобный SQL-запрос, которые позволит удалить все, абсолютно все мета-записи c указанным значением meta_key из таблиц с мета-данными, аля:

  • wp_postmeta,
  • wp_termmeta,
  • wp_sitemeta,
  • wp_usermeta,
  • wp_commentmeta,

ну и так далее (хотя на сегодняшний день вроде больше нет других таблиц в WordPress).

Предположим, вы использовали плагин, который при редактировании каждого поста добавлял в него какие-то мета-данные, а при удалении не стал их автоматически удалять. Либо вы сами разрабатываете свой плагин и хотите в uninstall.php прописать автоматическое удаление всего, что плагин насоздавал.

Так вот, подобное удаление выполняется SQL-запросом:

DELETE FROM `wp_postmeta` WHERE meta_key = 'not_true_meta_key'

Ясно дело, что надо не забывать менять префикс wp_ на тот, который используете в своей базе данных, ну да и вполне возможно, что вы выполняете этот запрос не для постов, а ну для пользователей например, тогда меняем название таблицы:

DELETE FROM `wp_usermeta` WHERE meta_key = 'not_true_meta_key'

Для того, чтобы запускать SQL запросы непосредственно из PHP (помните, я же говорил про файл uninstall.php буквально только что), то тогда активно пользуемся объектом $wpdb.

global $wpdb;
$wpdb->query( 
	"DELETE FROM `wp_usermeta` WHERE meta_key = 'not_true_meta_key'" 
);

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Пишите, если нужна помощь с сайтом или разработка с нуля.

Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.

Миша Рудрастых и WordPress

Полезности из мира WordPress и жизни студии.

Мой телеграм-канал