WordPress замечательный инструмент для ведения персонального блога. Практически любую задачу можно выполнить через плагины. Но иногда проще и быстрее выполнить SQL запрос. О некоторых таких запросах, облегчающих жизнь, мы поговорим в этой статье.
Для начала о том как запустить SQL запросы. Так как мы говорим о WordPress, то в нашем распоряжении есть такой инструмент как plugins.
SQL Executionners – плагин позволяет запускать SQL Queries для вашего WordPress блога
WP-DBManager – мощный плагин, позволяющий вам полностью контролировать всю работу с DB.
Также SQL можно запускать и в PhpMyAdmin, который в большинстве случаев уже установлен.
Ну а теперь перейдем непосредственно к SQL
Изменение пароля
Если вы забыли ваш admin пароль, то самым быстрым решением будет создать новый. Обратите внимание на использование функции MD5, которая шифрует ваш пароль
UPDATE 'wp_users' SET 'user_pass' = MD5('ВАШ_НОВЫЙ_ПАРОЛЬ_ЗДЕСЬ') WHERE 'user_login' ='admin' LIMIT 1;
Перенос записей от одного пользователя другому
Если у вас возникла необходимость перенести все записи одного пользователя вашего блога к другому, то здесь на помощь приходит следующий SQL
UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
Удаление версий и связанных с ними meta-данных
Автосохранение версий мощный инструмент WordPress. Однако они утяжеляют базу данных. Например, если у вас есть 100 записей, и для каждой из них имеется 10 версий, то в таблице записей хранится 1000 строк, при том что используется всего 100.
Следующий SQL запрос удалит все автосохраненные версии и их meta-данные (custom fields др.)
DELETE a,b,c FROM wp_posts a WHERE a.post_type = 'revision' LEFT JOIN wp_term_relationships b ON (a.ID = b.object_id) LEFT JOIN wp_postmeta c ON (a.ID = c.post_id);
Удаляем spam за раз
Чтобы одним махом удалить все spam-комментарии выполняем
DELETE from wp_comments WHERE comment_approved = '0';
Поиск не используемых тэгов
Если вы когда-то создали тэг, но так им ни разу не воспользовались, то его можно смело удалить. Чтобы найти такие тэги запускаем SQL запрос
SELECT * From wp_terms wt INNER JOIN wp_term_taxonomy wtt ON wt.term_id=wtt.term_id WHERE wtt.taxonomy='post_tag' AND wtt.count=0;
Поиск и замена данных
Часто возникает необходимость изменить текст во всех записях вашего блога. Используйте следующее SQL предложение
UPDATE table_name SET field_name = replace( field_name, 'СТАРЫЙ_ТЕКСТ', 'НОВЫЙ_ТЕКСТ' ) ;
Только не забудьте заменить table_name – на нужную таблицу, и field_name – колонку в которой заменить текст
Email всех ваших комментаторов
Если необходимо собрать email адреса всех кто либо оставлял у вас в блоге комментарии, то можно запустить следующий SQL запрос
SELECT DISTINCT comment_author_email FROM wp_comments;
Отключаем все плагины сразу
Чтобы отключить все плагины, установленные у вас в WordPress, запускаем
UPDATE wp_options SET option_value = '' WHERE option_name = 'active_plugins';
Удаление все тэгов
Тэги и категории хранятся в таблице wp_terms. И если вам вдруг понадобится удалить все тэги, то будет недостаточно просто очистить эту таблицу. Необходимо также удалить все связи тэгов с записями.
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 );
Поиск не используемых meta данных
Meta-данные создаются различными плагинами и custom-fields. Это мощный инструмент, дающий гибкость вашему блогу. Однако со временем они разрастаются и не всегда используются. Чтобы очистить БД от не используемых meta-данных, запускаем SQL
SELECT * FROM wp_postmeta pm LEFT JOIN wp_posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL;
Закрыть комментарии к старым записям
Не знаю зачем может это понадобиться, но можно закрыть комментирование записей, сделанных до определенной даты. Следующий SQL запрос запрещает комментирование записей старше 01.01.2009
UPDATE wp_posts SET comment_status = 'closed' WHERE post_date < '2009-01-01' AND post_status = 'publish';
Замена URL сайтов комментатора
Чтобы заменить URL сайта какого-либо комментатора используйте
UPDATE wp_comments SET comment_author_url = REPLACE( comment_author_url, 'http://oldurl.com', 'http://newurl.com' );
Замена email комментатора
Чтобы изменить email какого-либо комментатора используйте
UPDATE wp_comments SET comment_author_email = REPLACE( comment_author_email, 'old-email@address.com', 'new-email@address.com' );












А зачем же убивать все урлы комментаторов, я понимаю когда спам, а так как то не очень хорошо получается, может тогда из формы сразу поле убрать?
я просто тупо значение этого поля с 200 поменял на 0 и все нормально стало))))
DELETE from wp_comments WHERE comment_author_url = ’0′;
а как будет выглядить запрос, чтоб все URL комментаторов удалить.
Подходит. Если вам удобнее пользоваться им, то это даже лучше. Я лишь предложил некоторые альтернативные решения
А чем SQLAdmin не подходит? У мненя в ВордПрессе плагинов уже туча стоит.