Серверная (www.it-simple.ru)

Wordpress изнутри


Внимание! Ведётся запись. В статью. Последнее изменение: 04.09.2011 16:16

Борьба с вордпрессом продолжается. Часть кода этого сайта переписана, часть даже — несколько раз.

Собран достаточно неплохой багаж знаний о движке. Причём, какую-то информацию пытался найти в интернете, но не нашёл и в итоге разбирался самостоятельно. Например, в структуре базы (http://www.it-simple.ru/?p=2322) движка. Или в способе шифрования паролей — то, что в инете гордо называют «md5 (Wordpress)», хотя md5 к вордпрессовским хэшам имеет лишь косвенное отношение.

Толчком к оформлению всего этого в виде отдельной записи послужило письмо:

Доброго времени суток. Меня зовут Денис, хотелось бы узнать как расширить функционал движка Wordpress. В инете толком ничего не нашёл, рекомендации поставить какие-то плагины или создать home.php читал. Хотелось бы ручками нормально прописать и привести блог в лучший вид. Например ресайз основной области контента как сделать? Если у Вас найдётся пара свободных минут, напишите пожалуйста. Заранее спасибо.

Итак:

Поехали.

WordPress — система управления содержимым сайта (CMS) с открытым исходным кодом, распространяемая под GNU GPL. Написана на PHP, в качестве базы данных использует MySQL. Сфера применения — от блогов до достаточно сложных новостных ресурсов и даже интернет-магазинов. Встроенная система «тем» и «плагинов» вместе с удачной архитектурой позволяет конструировать практически любые проекты. WordPress выпущен под лицензией GPL версии 2.

http://ru.wikipedia.org/wiki/Wordpress (http://ru.wikipedia.org/wiki/Wordpress)

Распространение по лицензии GNU GPL подразумевает, что нам дают все исходники вордпресса и позволяют как угодно их модифицировать. Однако, если мы решим раздавать/продавать производный от вордпресса продукт, мы обязаны будем делать это с точно такими же условиями. То есть, предоставлять исходники и позволять их модифицировать.

Эдакая «вирусная» свобода. Единственный реальный (работающий!) способ защититься от коммерсов.

Установка

Весь вордпресс представляет собой набор PHP файлов (плюс стили и необязательный жаваскрипт), которые будут работать на стороне сервера. Процедура установки в деталях описана здесь (http://codex.wordpress.org/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_WordPress), поэтому останавливаться на ней нет смысла.

Нюансы

1. Ваш провайдер может не контролировать права к созданным на сервере файлам, поэтому удостоверьтесь, что полные права есть только у владельца хостинга, а у всех остальных — только на чтение. На линуксовом хостинге это, соответственно, 755 на каталоги и 644 на файлы.

2. Храните данные в кодировке UTF-8, это поможет избежать многих неприятностей с «нечитаемыми символами».

3. Для пущей безопасности после установки можно удалить с сервера файл wp-admin/install.php. Он уже отработал и больше не нужен.

Работа

Все http-запросы к вордпрессу обрабатываются индексным файлом index.php в его корне. Этот файл цепляет все необходимые скрипты, обрабатывает строку запроса и на основе результатов этой обработки отдаёт пользователю ту или иную веб-страницу.

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

AddDefaultCharset UTF-8

# BEGIN WordPress

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Строку «AddDefaultCharset UTF-8» вордпресс не устанавливает. Это указание веб-серверу выдавать страницы в кодировке UTF-8.

Структура каталогов и файлов

Структура неполная, только самое важное.

wp-admin Админка и файлы для авторизации зарегистрированных пользователей.
wp-content Структура сайта (дизайн), языки и плагины.
themes Темы, распределённые по каталогам. Каждый каталог является отдельным шаблоном дизайна сайта.
wp-includes Все дополнительные подключаемые компоненты: классы, функции, скрипты и стили.
wp-config-simple.php Коннектор к базе и другие настройки. Должен быть переименован в wp-config.php
wp-login.php Авторизация на сайте.
wp-settings.php
[...]