Июн
5
7

Полезные SQL запросы для WordPress / часть2

sql запросыЯ смотрю предыдущая статья про SQL запросы пришлась многим по душе. Что ж, там где я их взял (спасибо автору), осталась еще парочка полезных вещей. Перед тем как продолжить, напомню лишь, что SQL запросы позволяют выполнять определенные действия с вашим блогом напрямую через базу данных. Для этого понадобиться программа PhpMyAdmin, которая, в принципе, установлена и доступна на большинстве нормальных хостингах. В прошлом посте вы можете найти SQL запросы для: изменения пароля блога и автора поста, удаления ревизии постов, их мета данных, а также удаление спам комментариев и нахождение неиспользуемых тегов.  Сегодня нас ждут не менее интересные SQL запросы.

Поиск и замена данных

Данный запрос не совсем типичный для wordpress, но его, в принципе, должны знать все те, кто работает с базами данных MySQL. Речь пойдет о функции MySQL под названием replace(), что позволяет определить поле для таблицы БД, для которого можно будет заменить все вхождение «строки1» на «строку2». То есть будет произведен поиск по одному из полей определенной таблицы базы данных и, если найдутся совпадения, то выполнится указанная замена. Вот как выглядит запрос:

UPDATE table_name SET field_name = replace( field_name, 'string_to_find', 'string_to_replace' ) ;

То есть здесь table_name – имя таблицы, field_name – имя поля, первая string используется для поиска совпадений, вторая указывает на что будем заменять текущие значения. SQL запрос может быть полезен в разных случаях, например, для замены какой-то опечатки, которая очень часто повторялась во многих постах.

Получение списка Email ваших комментаторов

Автор оригинальной статьи утверждает, что достаточно часто можно получить на почту письмо от создателей блогов, где вы когда-то оставляли комментарии. В рунете вроде такого не припомню, хотя идея интересная весьма – такая себе «полуспамовая» рассылка всем, потенциально заинтересованным пользователям. Для такой цели нужно лишь одно – узнать список всех электронных почтовых адресов комментаторов, оказывается делает это достаточно легко с помощью соответствующего SQL запроса.

SELECT DISTINCT comment_author_email FROM wp_comments;

В этом коде параметр DISTINCT позволяет получить только одну запись email, если пользователей комментировал при этом несколько раз.

Отключить все wordpress плагины сразу

Когда с системой wordpress случается что-то нехорошее, возникает ошибка или памяти не хватает, то нужно действовать быстро. Учитывая тот факт, что чаще всего источником проблем в блоге являются плагины, рекомендую обратить внимание на запрос, которые за несколько секунд отключит их все.

UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';

Удаляем все теги

В wordpress все теги записываются в таблицу wp_terms, где также хранятся записи категорий. Поэтому, если вы хотите удалить только метки, то простой очисткой таблицы «заденете» еще и разделы. Теоретически удалять записи и теги можно непосредственно в админке, но если хотите избавится от них непосредственно в БД, то можно запустить следующий SQL запрос. При этом будут удалены все связи между постами и метками, но сохранятся установки для категорий блога.

DELETE a,b,c
FROM
	database.prefix_terms AS a
	LEFT JOIN database.prefix_term_taxonomy AS c ON a.term_id = c.term_id
	LEFT JOIN database.prefix_term_relationships AS b ON b.term_taxonomy_id = c.term_taxonomy_id
WHERE (
	c.taxonomy = 'post_tag' AND
	c.count = 0
	);

Отобразить пустые мета данные

Мета данные создаются при использовании произвольных полей или плагинов. Они, конечно, очень полезны для работы, но иногда могут привести к росту объема базы данных. Следующий запрос покажет все записи в таблице мета данных, которые не ведут ни на какие посты в блоге.

SELECT * FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;

Запретить комментирование в старых постах

Я хоть и не сторонних закрытия комментариев, но иногда блоггеры делают это для борьбы со спамом в старых постах. Кроме того иногда бывают ситуации (особенно с техническими блогами), когда информация достаточно быстро устаревает – почему бы при этом не закрыть от комментирования статьи за прошлый год. Это можно сделать автоматически с помощью небольшого SQL запроса.

UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2009-01-01' AND post_status = 'publish';

Здесь будут закрыты все комментарии для постов, опубликованных до 1 января 2009го.

Заменить ссылку в комментарии

Тут мы как раз недавно рассматривали полезную MySQL функцию replace(), самое время ее применить. Скажем у вас был старый сайт, на который вы ставили ссылки с комментариев в wordpress блоге для получения обратных ссылок. Но вдруг вы этот сайт продали, и было бы неплохо заменить в блоге все старые ссылки на какой-то новый проект. Внимательно смотрим следующий запрос.

UPDATE wp_comments SET comment_author_url = REPLACE( comment_author_url, 'http://oldurl.com', 'http://newurl.com' );

Заменяем email комментатора

Сложно придумать зачем это нужно, но так для примера работы функции replace() можно упомянуть такой пример.

UPDATE wp_comments SET comment_author_email = REPLACE( comment_author_email, 'old-email@address.com', 'new-email@address.com' );

Удаляем комментарии со специфической ссылкой

Недавно автор оригинальной статьи в своем блоге заметил ситуацию с так называемым «умным спамом» в комментариях. Пользователь публиковал свой комментарий с весьма вразумительными мыслями, но ссылался при этом на свой фарма шоп. Причем, как оказалось, этот злоумышленник промышлял этим уже давно. Следующий SQL запрос позволит удалить все комментарии со специфической ссылкой в них.

DELETE from wp_comments WHERE comment_author_url LIKE "%wpbeginner%" ;

Символ «%» означает, что все комментарии, где в ссылках использовался текст, указанный между символами «%» будут удалены.

Вот такие прикольные получились SQL запросы – подборка, как по мне, намного практичней первой части, здесь чуть ли не 90% всех запросов можно применить в реальных ситуациях. Только помните – работать с базой данных нужно крайне аккуратно, данные потом никак не восстановить, поэтому делайте бэкапы.

рейтинг Оцените статью:
Ужасная статьяНичего интересногоТак себеНормальноХорошоКлассный постВ закладки!
(голосов - 3, средний балл: 5,33 из 7)
Загрузка...

категория Категории: Хаки и секреты;
теги Теги: , , , , , .

комментариев 7 к статье “Полезные SQL запросы для WordPress / часть2”

  • Brutalfight   06.06.2010

    Давно искал способ отображения пустых метаданных, спасибо за инфу!

  • Евгений   08.06.2010

    Тод, подскажите, как в вордпрессе сделать урл, который стоит в подписи для личного сайта/блога редиректом?

  • Piks   16.06.2010

    Некоторые из кодов отображаются хтмл-мнемониками, будьте внимательны при копировании запросов с этой страницы.

  • Siera   13.01.2011

    Спасибо!
    давно искала возможность удаления комментария с одной ссылкой. спамеры надоели

  • Tod   14.01.2011

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

  • latu   28.03.2012

    UPDATE bankaccount SET DATECREATE = replace( DATECREATE, ‘732726’, ‘999999’ )
    что не так ???? не выполняет замену

  • Tod   28.03.2012

    latu, сложно сказать, ошибка появляется? может не находит что заменить… может ошибка закралась, поищите подобные sql запросы в англоязычных блогах.

Оставить комментарий


Блог Wordpress Inside поможет вам научиться работать в вордпресс, закрепить и расширить имеющиеся знания. Плагины и шаблоны, разные хаки и функции wp, оптимизация и безопасность системы – все это и намного больше вы сможете найти на страницах нашего проекта!

Если хотите быстро и оперативно получать последние новости и статьи, то рекомендуем подписаться на обновления блога:

Поиск:
Последние посты
Лучшее в категории

Облако тегов
Скажи свое мнение!

В чем основные плюсы Wordpress?

Посмотреть результаты

Загрузка ... Загрузка ...
Друзья проекта
Последние новости