WordPress: полезные SQL-запросы и сниппеты для WordPress

wordpress логоWordPress хранит каждый кусочек информации, в него поступающий, в базе данных MySQL. В ней можно найти и посты, и страницы, и комментарии, и настройки плагинов — вобщем все. Конечно, админка WordPress дает простой и быстрый доступ ко всем этим данным. И этого хватает… до определенного момента.

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

Есть масса причин редактировать базу данных WordPress. И в этом деле уж никак не обойтись без SQL-запросов. Сегодня мы как раз разберем наиболее часто используемые запросы и сниппеты.

Если ваш хостинг позволяет работать с базой данных напрямую, то воспользуйтесь панелью phpMyAdmin для использования запросов и сниппетов представленных ниже. Если же в услуги хостинга не входит прямой доступ БД — подумайте о смене хостера.

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

Добавляем настраиваемое поле ко всем постам и страницам

Этот сниппет позволит добавить настраиваемые поля ко всем записям и страницам. Вс что нужно сделать — это заменить UniversalCutomField тем именем, которые вам нужно и MyValue значением на ваш выбор.

INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT ID AS post_id, 'UniversalCustomField'
AS meta_key 'MyValue AS meta_value FROM wp_posts
WHERE ID NOT IN (SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField');

Если нужно добавить поле только в посты, то используйте вот такой сниппет:

INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT ID AS post_id, 'UniversalCustomField'
AS meta_key 'MyValue AS meta_value
FROM wp_posts WHERE ID NOT IN
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')
`` AND post_type = 'post';

Если только в страницы, то такой:

INSERT INTO wp_postmeta (post_id, meta_key, meta_value)
SELECT ID AS post_id, 'UniversalCustomField'
AS meta_key 'MyValue AS meta_value
FROM wp_posts WHERE ID NOT IN
(SELECT post_id FROM wp_postmeta WHERE meta_key = 'UniversalCustomField')
AND `post_type` = 'page';

Определить неиспользуемые тэги

Если вы удаляли какие-либо посты, то скорей всего у вас остались теги, которые не упоминаются ни в одном из постов. Такие тэги не нужны и имеет смысл от них избавиться. Чтобы определить неиспользуемые тэги в WordPress можно воспользоваться вот таким сниппетом:

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-запрос, который удалит все комментарии с пометкой spam:

DELETE FROM wp_comments WHERE wp_comments.comment_approved = 'spam';

Удаление неодобренных комментариев

Этот сниппет удалить все комментарии, которые к данному моменту не одобрены:

DELETE FROM wp_comments WHERE comment_approved = 0

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

Для это запроса вы можете менять значение comment_status на open (комментарии открыты), closed (комментарии закрыты) или registered_only (комментарии разрешены только зарегистрированным пользователям). Так же смените дату 2010-01-01 на нужную вам:

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

Запретить или разрешить пингбэки и трэкбэки

Разрешить пингбэки и трэкбэки можно запросом:

UPDATE wp_posts SET ping_status = 'open';

Запретить пингбэки и трэкбэки можно запросом:

UPDATE wp_posts SET ping_status = 'closed';

Запретить или разрешить пингбэки и трэкбэки до определенной даты

В этом запросе два варианта для значения ping_status: open (разрешены) и closed (запрещены) и не забудьте поменять дату 2010-01-01 на нужную вам:

UPDATE wp_posts SET ping_status = 'closed' WHERE post_date < '2010-01-01' AND post_status = 'publish';

Удалить комментарии содержащие определенный URL

Если у вас масса комментариев, которые содержат один и тот же URL, то этот сниппет для вас — он удаляет комментарии содержащие определенный URL. Все, что вам нужно сделать это заменить значение nastyspamurl на нужное. Знаки % означают, что ищутся все вхождения данной строки.

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

Делаем страницы постами и наоборот

Все проще простого. Вот SQL-запрос, который делает посты страницами:

UPDATE wp_posts SET post_type = 'page' WHERE post_type = 'post'

и запрос, делающий страницы постами:

UPDATE wp_posts SET post_type = 'post' WHERE post_type = 'page'

Смена автора постов

Первое, что нам надо сделать — это узнать ID авторов. Для этого воспользуемся вот таким запросом:

SELECT ID, display_name FROM wp_users;

После того как вы узнали ID старого и нового авторов, используйте команду приведенную ниже. Не забудьте заменить NEW_AUTHOR_ID на ID нового автора и OLD_AUTHOR_ID на ID старого автора.

UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;

Удаляем ревизии записей

Ревизии могут полезны при редактировании записи. Но по-большей части это мусор в базе данных. Используйте вот такой SQL-запрос чтобы удалить все ревизии имеющихся записей в WordPress:

DELETE FROM wp_posts WHERE post_type = "revision";

Разрешить или запретить все плагины WordPress

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

UPDATE wp_options SET option_value = 'a:0:{}' WHERE option_name = 'active_plugins';

Вручную сменить пароль WordPress

Если вы единственный пользователь в админ панели вашего сайта и ваш логин admin, вы можете сбросить пароль простым SQL-запросом:

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

где PASSWORD — ваш новый пароль.

Внутренняя оптимизация это основа продвижения вашего сайта. Как сделать внутреннюю перелинковку в WordPress вы можете почитать на http://iremaker.com



Запись опубликована в рубрике Wordpress, Советы и фиксы с метками , , , , . Добавьте в закладки постоянную ссылку.

3 комментария: WordPress: полезные SQL-запросы и сниппеты для WordPress

  1. Уведомление: WordPress: полезные SQL-запросы и сниппеты для WordPress | Grabr

  2. Partnergu говорит:

    вот это пост-) спс

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *