8 полезных SQL-хаков для Wordpress

Категория: Wordpress Комментариев: 1

За последние 10 лет СУБД MySQL стала невероятно популярной в Интернет. Все WordPress-блоги работают на базе MySQL, в которой содержатся записи блога, комментарии, настройки, и многое другое.
Конечно, в огромном ассортименте плагинов можно найти плагин для любых целей, но бывают случаи, когда необходимо через phpMyAdmin выполнить очень специфичный SQL-запрос, который невозможно выполнить средствами никакого плагина.
Эти 8 хаков помогут в решении самых частых из таких случаев.

1. Создание бекапа базы данных.

Создание бекапа базы данных
Проблема. Необходимо сохранить дамп базы данных блога на случай ее повреждения.
Решение. Для снятия дампа базы данных нужно выполнить следующие 3 шага:
Войти в phpMyAdmin и выбрать базу данных WordPress;
На открывшейся странице в горизонтальном меню нажать «Export» («Экспорт»);
Выбрать метод сжатия (я обычно пользуюсь gzip), и нажать кнопку «Execute» («Выполнить»).
Ваш браузер предложит Вам выбрать место для сохранения файла с бекапом.
Примечание. Для создания бекапа базы данных блога есть специальный плагин WP-DB-Backup. С его помощью можно сохранять бекапы базы данных и без доступа к phpMyAdmin.

2. Массовое удаление ревизий постов

Массовое удаление ревизий постов
Проблема. Функция ревизии постов, появившаяся в Wordpress версии 2.6 очень полезна, но слишком сильно увеличивает объем базы данных. Конечно, можно удалить ревизии вручную, но это очень долгое и утомительное занятие.
Решение. Решение этой проблемы простое: массово удалить ревизии с помощью простого SQL-запроса. Если в Вашем блоге много записей, то в результате этого действия размер базы данных может уменьшиться более, чем вдвое!
Войдите в phpMyAdmin и выберите базу данных блога.
нажмите кнопку «SQL». Вставьте в тектовое поле следующий запрос:
DELETE FROM wp_posts WHERE post_type = "revision";
Нажмите «Execute».
Всё, ревизии удалены, и объем базы данных уменьшен!
Объяснение. В таблице wp_posts есть поле post_type, которое может иметь разные значения, например «post», «page», или «revision». В вышеупомянутом запросе мы удаляем из таблицы wp_posts записи, у которых поле post_type содержит значение «revision».
Примечание. Полностью отключить ревизии можно добавив в wp_config.php следующую строку:
define('WP_POST_REVISIONS', 0);

3. Удаление 5000 спам-комментариев за секунду

Удаление 5000 спам-комментариев за секунду
Проблема. Один мой знакомый недавно создал блог на базе WordPress, и начал рекламировать его везде, где только мог. После нескольких недель интенсивного продвижения он оказался без доступа к интернету на несколько дней.
После возвращения он увидел в своем блоге ... более 5000 комментариев, ожидающих модерации! Конечно, большинство комментариев были спамом, но он собирался проверить их все вручную, дабы не удалить комментарий от одного из своих читателей.
Решение. К счастью, он сообщил мне о своей проблеме со спамом. К тому моменту, когда я показал ему полезный SQL-прием, он уже почти час трудился над разгребанием этой кучи комментариев.
Заходим в phpMyAdmin и выбираем базу данных Вашего блога WordPress.
Нажимаем кнопку «SQL», вставляем в текстовое поле следующую комманду и нажимаем «Execute»
DELETE from wp_comments WHERE comment_approved = '0';
Прощайте, спам-комментарии!
Объяснение. В таблице wp_comments есть поле comment_approved, которое содержит булевое значение (1 или 0). У промодерированных комментариев это значение равно 1, а у непромодерированных — 0. С помощью вышеуказанной комманды мы просто удаляем все неодобренные комментарии.
Примечание. Да, это решение может быть очень полезным еслиу Вас миллионы спам-комментариев. Но оно также удалит и нормальные неодобренные комментарии! Если Вы еще не используете Akismet для защиты от спама, то скорей установите его.

4. Изменение атрибутов записей

Изменение атрибутов записей
Проблема. Во время установки WordPress по умоанию создается профиль с именем «admin». Некоторые блоггеры начинают писать от его имени, и слишком позжно понимают, что это не очень удачное решение.
Решение. Изменение автора для каждой статьи в отдельности — дело очень утомительное. Но к счастью, это можно легко выполнить с помощью SQL.
Войдите в phpMyAdmin и выберите свою базу данных WordPress.
Теперь нам нужно получить правильный user ID нужного нам пользователя. Для этого открываем вкладку «SQL» и выполняем следующий запрос:
SELECT ID, display_name FROM wp_users;
Будет отображен список идентификаторов пользователей Вашего блога. Допустим ID пользователя, которого мы хотим сделать автором статей — NEW_AUTHOR_ID, а администратора — OLD_AUTHOR_ID.
Теперь выполняем следующий запрос:
UPDATE wp_posts SET post_author=NEW_AUTHOR_ID WHERE post_author=OLD_AUTHOR_ID;
Все,теперь автором записей администратора стал новый пользователь.

5. Ручной сброс пароля

Ручной сброс пароля
Проблема. Для защиты своего блога пользователи устанавливают очень сложные пароли, например u7*KoF5i8_. Конечно, с точки зрения безопасности это очень хорошо, но такой пароль легче забыть.
Решение. Еси Вы забыли пароль, WordPress может выслать Вам на e-mail ссылку для сброса пароля. Но если у Вас нет доступа к e-mail адресу, указанному в настройках WordPress? Вот хак для этой проблемы.
Войдте в phpMyAdmin, выберите базу данных WordPress, и откройте вкладку «SQL».
Вставьте и выполните следуюую комманду:
UPDATE `wp_users` SET `user_pass` = MD5('PASSWORD') WHERE `wp_users`.`user_login` =`admin` LIMIT 1;
Всё, Ваш старый пароль был заменен тем, что вы вставили вместо 'PASSWORD'.
Пояснение. Пароли пользователей хранятся в таблице wp_users в хешированной по алгоритму MD5 форме. Здесь мы выполняем UPDATE-запрос и используем встроенную в MySQL функцию MD5 для хеширования нового пароля. В условии 'WHERE' указано, что мы изменяем только пароль администратора. Еси выполнить этот запрос без WHERE-условия, будут заменены пароли всех пользователей!

6. Изменение доменного имени блога

Изменение доменного имени блога
Проблема. Хотя это и нежелательно, но все-же бывают случаи, когда нужно изменить доменное имя блога WodPress. Так как WordPress хранит свое доменное имя в базе данных, придется его изменить прежде, чем менять домен.
Решение.
Заходим в phpMyAdmin, выбираем базу данных WordPress, и открываем вкладку «SQL».
Вводим в текстовое поле следующий запрос:
UPDATE wp_options SET option_value = replace(option_value, 'http://www.oldsite.com', 'http://www.newsite.com') WHERE option_name = 'home' OR option_name = 'siteurl';
Теперь нужно изменить guid'ы записей. Сделать это можно следующим запросом:
UPDATE wp_posts SET guid = replace(guid, 'http://www.oldsite.com','http://www.newsite.com');
И последний шаг, нужно заменить все упоминания домена блога в записях. Вот запрос:
UPDATE wp_posts SET post_content = replace(post_content, 'http://www.oldsite.com', 'http://www.newsite.com');
Все, теперь блог будет корректно функцинировать на новом доменном имени.
Объяснение. Чтобы легко изменить доменное имя блога была использована очень полезная функция MySQL 'replace', которая позволяет заменить одно выражение другим.
Примечание. Также для этих целей можно воспользоваться плагином Search And Replace.

7. Отображение количества выполненных SQL-запросов.

Отображение количества выполненных SQL-запросов
Проблема. Количество запросов к базе данных — очень полезная информация если Вы занимаетесь оптимизацией блога. Но как-же узнать количество выполненных запросов?
Решение. На этот в phpMyAdmin входить не придется. Просто откройте файл footer.php и вставьте в него следующий код:
<?php if (is_user_logged_in()) { ?>

<?php echo get_num_queries(); ?> queries in <?php timer_stop(1); ?> seconds.

<?php } ?>
Сохраните файл, и войдите в свой блог. В футере будет отображено количество запросов, сделанных к базе данных WordPress.
Объяснение. Похоже, что болшинство блоггеров не знают об этой полезной функции. Функция get_num_queries () возвращает количество выполненных за время генерации страницы запросов.
Заметьте, что вышеупомянутый код будет отображать количество запросов только зарегистрированным пользователям потому что простым посетителям и роботам поиковых систем эта информация никчему. Но если Вы хотите сделать эту информацию публичной, просто удалите инструкцию if (is_user_logged_in ()).

8. Восстановлениие бекапа базы данных

Восстановлениие бекапа базы данных
Проблема. Допустим, по каким-то причинам (неудачное обновление, или взлом) Вы потеряли данные своего блога, или они были повреждены. Если у Вас есть бекап, то его можно импортировать в базу данных WordPress.
Решение. Войдите в phpMyAdmin и выберите вашу базу данных WordPress;
В горизонтальном меню нажмите кнопку «Import»;
Нажмите кнопку «Browse» и выберите файл бекапа Вашей базы данных;
Нажмите кнопку «Execute». Если все прошло хорошо, Ваша база данных будет снова работоспособна.
Примечание. Если Ваш файл бекапа очень большой (более 10Мб), phpMyAdmin может отказаться его восстанавливать.
В этом случае на помощь может придти утилита mysqldump и восстанвление через ssh коммандой
mysql -u [username] -p [password] [database_to_restore] < [backupfile]

Автор: Jean-Baptiste Jung, http://www.smashingmagazine.com/2008/12/18/8-useful-wordpress-sql-hacks/

Автор: Кто-то   @   16 августа 2009 Комментариев: 1
Метки :

Поблагодарить автора

Webmoney Z163628999150, R61715184597

Комментариев: 1


Leave a reply

;) :| :x :twisted: :) 8O :( :roll: :P :oops: :o :mrgreen: :lol: :idea: :D :evil: :cry: 8) :arrow: :? :?: :!:

Предыдущая запись
«
Следующая запись
»