За последние 10 лет, база данных MySQL стала невероятно популярной в сети Интернет. Каждый WordPress-блог управляется MySQL базой данных, которая содержит посты блога, настройки, комментарии и многое другое.

Хотя и имется достаточное плагинов с помощью которых можно решить некоторые проблемы, но иногда у вас нет другого выбора, кроме как выполнить SQL-команды в PhpMyAdmin или непосредственно в базе данных через SSH. Давайте взглянем на 8 полезных SQL-хаков для WordPress. Каждый раздел этого поста представляет собой проблему, предлагает решения и дает пояснения, которые помогут вам понять решение.

1. Создаем резервную копию Вашей базы данных.

Creating a Backup of Your Database

Проблемы. Несмотря на то, что советы в остальной части этого сообщения были протестированы, вы не должны попробовать какой-либо из них без предварительного создания резервной копии базы данных MySQL.

Решение. Чтобы вручную создать резервную копию базы данных WordPress, выполните следующие действия:

1. Войти в PhpMyAdmin и выберите вашу базу данных WordPress.
2. После этого нажмите кнопку "Экспорт", расположенных в горизонтальном меню.
3. Выберите метод сжатия (лично я использую GZIP), и нажмите кнопку "Выполнить".
4. Ваш браузер спросит вас, хотите ли вы скачать архив. Конечно, выберите "Да", а затем сохранить его на жестком диске.

Пояснение. Отметим, что создать резервную копию базы данных WordPress можно легко с помощью плагина WP-DB-Backup. Пользователи должны установить этот плагин, если они этого еще не сделали, и создавать регулярные резервные копии своих данных.

2. Удаляем ревизии постов (post revisions).

Batch Delete Post Revisions

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

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

  1. Войти в PhpMyAdmin и выберите вашу базу данных WordPress.
  2. Нажмите кнопку "SQL". Вставьте следующий код в окно SQL команды:
    DELETE FROM wp_posts WHERE post_type = "revision";
  3. Выполните её. В зависимости от того, сколько постов в вашей  базе данных, вы можете съэкономить много драгоценного пространства!

Разъяснение кода. Wp_posts таблица имеет поле post_type. Это поле может иметь одно из значений, таких, как "post", "page" или "revision". Если мы хотим избавиться от поста "revision", мы просто запускаем команду, чтобы удалить все элементы в таблице wp_posts, в которой поле post_type равно "revision".

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

Erase 5000 Spam Comments in a Second

Проблема. Реальная история: мой друг недавно создал свой блог и начал пиарить его везде в Интернете. После нескольких недель напряженной работы, он отправился на несколько дней в отпуск и у него не было доступа в Интернет. Когда он вернулся домой, он зашел на свой блог и увидел что более 5000 комментариев ожидают модерации! Конечно, большинство из них были спамом, но он собирался проверить их все, чтобы не удалить полезные замечания, сделанные кем-либо из его регулярных читателей.

Решение. К счастью, мой друг рассказал мне о своей проблеме со спамом. Он уже провел 45 минут вручную удаляя спам, когда я показал ему как это можно решить с помощью SQL.

  1. Войдите в PhpMyAdmin и выберите вашу базу данных WordPress.
  2. Нажмите кнопку "SQL". Вставьте следующий код в окно SQL команды:
    DELETE FROM wp_comments WHERE comment_approved = '0';
  3. Прощайте плохие комментарии!

Пояснение. Wp_comments таблица содержит поле с именем comment_approved, которое содержит булево значение (1 или 0). Утвержденные комментарии имеют значение 1, а комментарии, ожидающие подтверждение модератора, имеют значение 0. Запустив этот скрипт, мы просто удаляем любые комментарии, которые не были еще утверждены.

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

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

Change the Post Attribution

Проблема. Когда вы устанавливаете WordPress, создается аккаунт "Администратор". Некоторые блоггеры делают ошибку, используя эту учетную запись, чтобы написать свои посты, а затем понимают, что лучше писать под своим именем, а не под именем безликого Администратора, существующего на каждом блоге.

Решение. Изменять атрибут "автор" для каждого поста занимает много времени. К счастью, SQL может помочь вам добиться своей цели:

  1. Войдите в свой PhpMyAdmin и выберите вашу базу данных WordPress.
  2. Во-первых, мы должны получить ID всех пользователей. Чтобы сделать это, откройте командную строку SQL и выполните следующую команду:
    SELECT ID, display_name FROM wp_users; 
  3. PhpMyAdmin отобразит список идентификаторов пользователей Вашего блога. Допустим, что NEW_AUTHOR_ID идентификатор недавно созданный автором, и OLD_AUTHOR_ID это оригинальный ID учетной записи Администратора.
  4. После того, как вы найдете идентификаторы NEW_AUTHOR_ID и OLD_AUTHOR_ID , запустите следующую команду:
    UPDATE wp_posts
    SET post_author=NEW_AUTHOR_ID
    WHERE post_author=OLD_AUTHOR_ID;

Вот и все. Все посты, которые ранее были отнесены к администратору теперь отнесены к тому пользователю, которого вы выбрали.

5. Вручную "сбрасываем" Ваш пароль.

Manually Reset Your Password

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

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

  1. Войдите в свой PhpMyAdmin, выберите WordPress базы данных и откройте вкладку SQL.
  2. Вставьте следующую команду (предполагается, что ваше имя пользователя "Администратор"):
     UPDATE `wp_users`
     SET `user_pass` = MD5('PASSWORD')
     WHERE `wp_users`.`user_login` =`admin` LIMIT 1
  3. После того как вы запустите скрипт Ваш пароль будет успешно заменен на следующий: "PASSWORD".

Пояснение. Пароли пользователей хранятся в таблице wp_users. Для безопасность пароль закодирован. Мы должны создать "UPDATE" SQL-запрос и использовать встроенную MySQL функцию MD5() для преобразования вашего пароля в закодированный, а затем обновить его. "WHERE" условие гарантирует, что мы обновляем только пароль администратора, в противном случае обновяться все пароли!!

6. Изменяем домен для Wordpress.

Change Your WordPress Domain Name

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

Решение.

  1. Как вы уже могли догадаться, первое, что необходимо сделать это войти в свой PhpMyAdmin и выбрать вашу базу данных WordPress.
  2. Нажмите кнопку "SQL". Для того чтобы изменить свой WordPress URL  выполните эту команду:
    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'
  3. Затем, мы должны заменить относительные URL (GUID) каждого поста. Следующая команда сделает эту работу:
    UPDATE wp_posts
    SET guid = REPLACE(guid, 'http://www.oldsite.com','http://www.newsite.com');  
  4. Мы почти у цели. Последнюю вещь которую необходимо сделать это поиск и замена в wp_posts таблице, чтобы убедиться, что там нет абсолютных URL:
    UPDATE wp_posts
    SET post_content = REPLACE(post_content, 'http://www.oldsite.com', 'http://www.newsite.com')
  5. Готово. Вы можете войти в свой WordPress блог, используя ваш новый URL.

Пояснение. Чтобы быстро изменить наше доменное имя, я воспользовался супер-полезной MySQL-функцией "replace", которая позволяет заменить одно выражение на другое.

7. Выводим на экран количество sql-запросов в Вашем блоге.

Display the Number of SQL Queries on Your blog

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

Решение.

  1. На этот раз, не нужно заходить в PhpMyAdmin. Просто откройте файл footer.php в вашей теме и добавьте следующие строки кода:   
    <?php if (is_user_logged_in()) { ?> 
    <?php echo get_num_queries(); ?> queries in <?php timer_stop(1); ?> seconds. 
    <?php } ?>
  2. Сохраните файл и зайдите на ваш блог. Внизу страницы вы увидите число запросов, сделанных к базе WordPress, а также время затраченное на них.

Пояснение. Похоже, что многим пользователям WordPress не известно об этой полезной функции. Функция get_num_queries() возвращает количество выполненных запросов во время загрузки страницы. Заметьте, что код будет отображать количество запросов только залогиненным пользователям, но если вы хотите сделать его видимым всем, просто удалите это условие - if(is_user_logged_in()).

8. Восстанавливаем Вашу базу данных Wordpress.

Restore Your WordPress Database

Проблема. Давайте представим, что по каким-то причинам, например, таких как взлом или неправильное обновление, вы потеряли данные своего блога или они повреждены. Если у вас есть резервная копия (а она должна быть!) Вы должны импортировать её в вашу базу данных.

Решение.

  1. Войдите в PhpMyAdmin и выберите вашу базу данных WordPress.
  2. Нажмите кнопку "Import" в горизонтальном меню.
  3. Нажмите кнопку "Browse" и выберите последнюю резервную копию базы данных на Вашем жестком диске.
  4. Нажмите кнопку "Execute". Если все прошло хорошо, ваша база данных полностью готова к работе.

8 Useful WordPress SQL Hacks


Если у Вас возникли вопросы, то для скорейшего получения ответа рекомендуем воспользоваться нашим форумом

Комментарии  

+1 #1 ArtMouse 10.08.2011 20:53
Большое спасибо, весьма полезная статья.

You have no rights to post comments