10+ важных SQL запросов для WordPress


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

Как выполнять SQL запросы

Для тех, кто ещё не знаком с этим, скажу, что SQLзапросы должны исполняться в командном интерпретаторе MySQLили в вэб интерфейсе напрямую, напрмер в популярном PhpMyAdmin. Поскольку мы работаем и будем работать в WordPress, то Вам необходимо знать о том, что существует плагин SQL Executionner, который имеет простой интерфейс и позволяет выполнять SQL запросы напрямую в блоге в административной панеле.

Хотя все описанные запросы были протестированы, всё же я не рекомендую Вам знакомиться с ними на рабочем блоге. Поставьте отдельный блог и пробуйте сначала на нём. Также, всегда нужно помнить, что перед началом любых взаимодействий с базой данных блога необходимо иметь рабочую архивную версию блога.

1. Изменение пароля вручную

Мы всегда думаем, что кто-то другой может забыть пароль от своего блога, но с нами этого случиться не может. Но всё же это случается. Что же делать если Вы потеряли или забыли пароль для своего блога? Единственное решение здесь, это создать новый пароль непосредственно в самой базе MySQL. Напрямую изменить его не получиться, поскольку WordPress использует шифрование. Следующий запрос всё это и проделает за нас. Функция MySQL MD5() превратит наш пароль в хэш последовательность, что и будет записано в базу.

UPDATE 'wp_users' SET 'user_pass' = MD5('PASSWORD') WHERE 'user_login' ='admin' LIMIT 1;

2. Передача постов от одного пользователя к другому

Большинство новичков использующих WordPress склонны использовать добрые старые админские аккаунты “admin” вместо того, чтобы создать и использовать свои собственные аккаунты с реальными именами. Если поздно, но всё же Вы осознали свою ошибку, прислушались к советам знающих людей и создали наконец аккаунт отражающий Ваше персональное имя, Вы легко можете легко переместить Ваши старые "админские" посты в новый аккаунт с помощью следующего запроса SQL, при этом Вам понадобиться знать ID нового и старого аккаунтов.

UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;

3. Удаление ревизий постов и мета данных, связанных с этими ревизиями

Ревизии постов безусловно очень полезная вещь, особенно в случае если на блоге пищут несколько авторов. Однако проблема здесь состоит в том, что существенно увеличивается число записей, которые создаются для каждой такой ревизии. Например, если Ваш блог содержит 100 постов в каждом по 10 ревизий, то Вы получите 1000 записей в таблице wp_posts, хотя действительно нужными окажуться именно 100. Выполнение следующего запроса удалит все ревизии постов а также всю мета информацию связанную с этими ревизиями (пользователькие поля и т.д.). Весь этот процесс значительно уменьшит объём самой базы.

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);

4. Пакетное удаление спам комментариев

Представьте, что Вы вернулись с увлекательных каникул, где у Выс не было доступа в Интернет. Если у Вас не установлен антиспамовый плагин Akismet, то в зависимости от популярности Вашего блога, на модерацию может попасть 1000, 2000 или более спам комментариев. Вам понадобиться целый день на то, чтобы разобрать такое колличество комментариев. Хотя Вы можете выполнить слкдующий запрос и удалить разом все неподтверждённые комментарии. А к следующим каникулам не забудьте поставить плагин Akismet!

DELETE from wp_comments WHERE comment_approved = '0';

5. Поиск неиспользуемых тэгов

Тэги записываются в таблицу wp_terms. Если некоторые тэги были созданы, но не были использованы, они всё равно остаються в этой таблице. Следующий запрос покажет, какие из тэгов в таблице wp_terms нигде не используются. Вы их можете спокойно удалить.

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;

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

Этот запрос не является специфическим для WordPress а больше известен для тех, кто работает с базами данных MySQL. Функция MySQL - replace()позволяет указать имя поля, строку для поиска и сроку замены. После выполнения запроса, любой текст в поле, удовлетворяющему условиям поиска будет заменён на строку замены. Для WordPress это может быть полезным при замене названий или названий эл. почты.

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

7. Удаление всех тэгов

Чтобы удалить сразу все тэги, Вы не можно просто очистить таблицу в которой они содержаться. Таблица эта - 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
);

8. Список неиспользуемой мета информации

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

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

9. Запрет комментирования старых постов

Все кто в блоггинге уже более года знаю, что даже через несколько месяцев после опубликования поста, информация в нем может быть интересна публике и может вызывать активные коментарии потому, что страницы бали поздно проиндексированы. Это конечно хорошо, но многим подобно мне, имеющим технический блог, приходится отвечать на старые и часто устаревшие вопросы. Частичным решением хдесь может быть запрет на комментирование слишком старых постов. Напрмер, следующий запрос закроет комментирование на всех постах, опубликованных до 1 января 2009:

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

10. Замена url комменатора

Ранее я уже упоминал MySQLфункцию replace(). Это хороший пример того, насколько она полезна: предположим, что у Вас был сайт и Вы использовали его url в Ваших комментариях для генерации бэклинков к этому сайту. Если Вы продали тот сайт, то Вы можете легко заменить старый url на новый url нового сайта. Просто запустите следующий запрос:

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

11. Замена у комментатора адреса email

Этот запрос показывает другой вариант использования замечательной функции replace(). Он заменяет старый адрес почты на новый.

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

12. Удаление всех комментариев с заданным url

В последнее время я заметил, что некоторые умные спамеры становятся всё изобретательней и остабляют осмысленные комментарии, правда с ссылками ведущими на сайт, например, виагры. К насчастью, кода это становиться заметно, спаммер уже успевает оставить множество комментариев. Хорош, что у нас есть возможность выполнить следующий запрос, который удалит все комментарии с заданным url. Знак “%” означает означает любое совпадение, что будут удалены все url содержащие значения между этими знаками.

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

Надеюсь, что-то будет полезным.

по материалам Джона Джанга

Реклама
Поделиться
Качественные премиум темы и шаблоны для Вашего сайта:

Смотреть полный каталог качественных тем и шаблонов

Здесь Вы можете выбрать из более чем 46 000 готовых дизайнов. Шаблоны сайтов + установка + хостинг + персонализация + поисковая оптимизация + копирайтинг — все эти услуги вы всегда можете получить от профессионалов мирового уровня!

Добавить коментарий

5 × пять =