В какой папке находятся функции ядра wordpress. Структура шаблонов темы WordPress, их иерархия и порядок работы движка с файлами страниц

Добрый вечер, друзья-товарищи!

Готовил к публикации статью на другую тему, но столкнулся с тем, что описываемые изменения опять затрагивали файл в папке wp-includes . Напомню, что в статье мы уже редактировали файл из этой папки – /wp_includes/taxonomy.php . Тогда меня смутил этот момент и, вот, опять я пришел к этому. Поэтому, прежде, чем двигаться дальше – решил окончательно разобраться можно ли вносить изменения в файлы папки wp-includes ?

Поиск дал однозначный ответ: Редактировать файлы в папке wp-includes НЕЛЬЗЯ!

В wp-includes расположены файлы ядра WordPress и при обновлении могут быть обновлены или удалены, в зависимости от изменений, в очередной версии WP.

Конечно, вы можете внести изменения в системные файлы (код же открытый), но тогда у вас есть два варианта:

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

2. Вы фиксируете все изменения, внесенные вами в файлы ядра, и после обновления вновь повторяете эти правки. Тоже не хорошо. Если сразу не избавиться от этой вредной привычки – редактировать системные файлы, то изменений может накопиться очень много, и каждый раз повторять их – это дополнительное и не очень интересное занятие, которое может привести вас к первому варианту – отказу от обновлений. И потом, даже если вам будет не лень каждый раз вносить ваши изменения в ядро, то после очередного обновления может случиться так, что ваш код просто не впишется в новое ядро, в виду каких-то глобальных изменений.

Вывод – нужно бросать эту вредную привычку раз и навсегда!

Каким образом? Повышать свой уровень знаний WordPress. Система создана таким образом, что всегда можно найти вариант изменений без вмешательства в ядро.

Наиболее легкий вариант решить существующую задачу – найти плагин с нужным функционалом. А раз есть плагин, то тоже самое можно реализовать и без плагина.

function my_category_order($orderby, $args) { if($args["orderby"] == "sort") return "t.sort"; else return $orderby; } add_filter("get_terms_orderby", "my_category_order", 10, 2);

function my_category_order ($ orderby , $ args )

if ($ args [ "orderby" ] == "sort" )

return "t.sort" ;

else

return $ orderby ;

add_filter ("get_terms_orderby" , "my_category_order" , 10 , 2 ) ;

Функция get_terms_orderby передает поле для условия ORDER BY sql-запроса. А мы добавили дополнительный код к этой функции, в котором фигурирует наше поле для сортировки – sort .

В пунктах 1 и 3 остаётся все без изменений, и таким образом, мы реализовали пользовательскую сортировку категорий без использования плагина. Но, теперь наш код не боится обновлений WordPress. Сортировка будет работать для текущего шаблона, если захотите перенести в другой шаблон – нужно повторять пункты 2 и 3 для новой темы.

Таким образом, в большинстве случаев, можно уходить от внесения изменений в файлы папки wp-includes .

Надеюсь, вы последуете моему примеру и откажетесь от редактирования файлов ядра WordPress. Действительно – это очень нехорошая практика, особенно, когда делаешь не для себя, а выполняешь чей-то заказ. Ничего не подозревающий человек, выполнит обновление WordPress и потеряет что-то полезное, за что было заплачено, и может, даже, не догадаться о такой “бяке”. Вернется к старой версии, откажется от обновлений и другим будет передавать свой негативный опыт.

Успехов в изучении WordPress! Берегите себя и клиентов от стрессов! =)

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

Внутреннее устройство WordPress

Мы все знаем, как работать с WordPress. Все начинается с входа в панель управления, после чего следует публикация, изменение или загрузка контента, установка или обновление необходимых плагинов, резервное копирование и так далее. Но задумывались ли вы о том, как все это работает?

Базовая основа всех сайтов - HTML (от англ. HyperText Markup Language - «язык гипертекстовой разметки»).

Конечной целью WordPress является генерация HTML-страниц, которая происходит динамически.

Ключевой термин для понимания здесь - «динамически». Термины «HTML-страница» и «веб-страница» являются синонимами. На самом базовом уровне WordPress использует PHP и базу данных SQL для хранения всех своих данных.

Таким образом, у нас есть два объекта:

  • PHP-код, который составляет ядро WordPress
  • и база данных, которая является памятью WordPress.

Каждая CMS WordPress использует одну базу данных. Не больше и не меньше. Каждый бит информации, которую вы ввели или будете добавлять на сайт в будущем, хранится в базе данных WordPress.

Сюда входят:

  • логин пользователя, пароль (зашифрованный с помощью MD5) адрес электронной почты и др.;
  • все записи, страницы, теги, категории и связи между ними;
  • пользовательские типы записей;
  • ревизии, черновики и удаленные записи;
  • одобренные комментарии и ожидающие модерации, а также всякий спам;
  • параметры настройки темы;
  • данные плагинов и многое другое.

А вот изображения, документы и другие загружаемые файлы не хранятся в базе данных WordPress. Они лежат в папке « wp_content ». Давайте остановимся на этом более подробно.

Все изображения (и другие медиафайлы), которые загружаются на сайт, хранятся в каталоге « uploads ». Они распределенные по годам, месяцам и дням. Эта папка может считаться базой данных для всех нетекстовых данных - изображений, PDF-файлов, видео, MP3 и другого. Доступ к этой папке и вложенным также должен быть ограничен. Это можно сделать путем изменения файла.htaccess , который находится в каталоге wp_content .

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

Анатомия запросов в WordPress

Или, как мне нравится это называть,

Что происходит, когда кто-то просматривает ваш сайт?

Когда кто-то посещает ваш сайт, WordPress динамически генерирует HTML-код (в соответствии с CSS и JS), который отображается в виде странички сайта. Вы не увидите расширение.html после URL-адреса (как вы могли видеть на некоторых старых веб-сайтах), так как это содержимое генерируется динамически.

Вот что происходит при запросе веб-страницы:

  1. Браузер посетителя запрашивает веб-страницу.
  2. Ядро WordPress (может считаться мозгом WordPress) вызывает требуемые PHP-скрипты, начиная с index.php .
  3. Затем ядро ​​WP соединяется со своей базой данных и извлекает данные (записи, страницы, комментарии и другую информацию).
  4. Затем он объединяет извлеченные данные, данные из активных в настоящее время плагинов и текущую активную тему и генерирует HTML-код «на лету» то есть «динамически».
  5. Затем он обслуживает этот динамически сгенерированный HTML-код в браузере посетителя.

По умолчанию в WordPress папкой для хранения загружаемых изображений и других мультимедийных (и не очень мультимедийных) файлов является wp-content/uploads/ . Хоть этот адрес и выглядит нормально, но бывают случаи когда его необходимо изменить на другой, например, для того чтобы сделать картинки на поддомене или просто чтобы был более эстетичный и радующий глаз адрес до ваших картинок и медиафайлов, типа: http://paperplane.su/images/ . Это можно легко сделать как на новых, так и на существующих веб-сайтах на WordPress. Но есть некоторые различия в разных версиях WordPress, в последних версиях это стало сделать немного сложнее (притом изменения разработчиков не совсем обоснованы).

Изменить папку загрузки в WordPress версии 3.5 и новее¶

В одном из последних (почти) обновлений WordPress 3.5 удалили возможность вводить свой пользовательский путь к папке для закачек. Все новые блоги WordPress по умолчанию будут использовать wp-content . Опция изменения его была вообще удалена из пользовательского интерфейса, чтобы избежать путаницы. Но по-прежнему можно установить пользовательскую папку для закачек с помощью добавления нужной константы в файл wp-config.php :

  • Откройте файл wp-config.php вашего блога, который лежит в корне сайта (с помощью FTP-доступа). Затем необходимо добавить небольшой фрагмент PHP-кода, чтобы установить свой каталог для загрузок, но будьте осторожны, неверное редактирование файла можете обрушить сайт. Потому зарезервируйте у себя на компе этот файл и редактируйте только через FTP, а не через интерфейс самого WordPress.
  • Чтобы поменять на свою папку, например, просто images от корня сайта (т.е. адреса картинок будут начинаться с http://paperplane.su/images/ ) необходимо добавить следующий код:

Если же вы хотите, чтобы ваша папка для загрузок находилась вне директории wp-content, например http://www.example.com/files/ , то вам нужно установить путь для загрузок в wp-config.php вот так:

1 define("UPLOADS" , "" . "files");

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

Изменить папку загрузки в старых версиях WordPress (до 3.5)¶

В старых версиях WordPress изменить папку очень просто (я до сих пор не понимаю почему эту возможность аннулировали). В принципе и объяснять нечего, но до кучи я это сделаю:

  • В админке WordPress, пройдите в меню Параметры -> Медиафайлы . Чуть ниже увидите раздел , в который и нужно добавить адрес папки. В поле Сохранять файлы в этой папке введите имя папки, которые вы хотите использовать вместо wp-content/uploads .
  • Во втором поле Полный URL-путь к файлам , если нужно, то введите полный URL-путь к новой папке изображений вместе доменом. Но нужно это в редких случаях, например, чтобы организовать хранения картинок на поддомене.

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

Возможные проблемы¶

Неправильный полный путь URL - необходимо наверняка знать свой абсолютный путь сайта на сервере от корня файловой системы. Вы этот путь должны либо знать, либо посмотреть где-нибудь, либо спросить у поддержки вашего хостинга. Например в панели администрирования хостингом CPanel ожно посмотреть свой точный путь, в других по идеи тоже можно. Он должен выглядеть в большистве случаем примерно следующим образом /home/username/public_html/images .

Права на папку - неверная настройка прав на выбранную вами папку не позволит добавлять в неё ничего. Убедитесь, что выбранная вами папка имеет права доступа 777 (возможность записи в неё всем). Вы можете сделать это в админке своего хостинга или в FTP-клиенте, что юзаете.

Шпаргалка о том, как устроен сайт на Вордпресс.

Корневой каталог WordPress содержит три папки: wp-content , wp-includes и wp-admin вместе с кучей разных PHP файлов, которые требуются для основных операций WP. Наиболее значимым из этих файлов является «wp-config.php ». Изменяя этот файл, можно добавить кучу ключевых вариантов настройки WordPress, которые не доступны из консоли администратора. Также в корне сайта лежат и другие системные файлы (например, wp-settings.php , wp-config.php ) которые влияют на настройки сайта.

Рассмотрим вкратце анатомию движка ВордПресс и за что отвечают те, или иные файлы и папки.

wp-admin
Эта папка содержит различные файлы, такие как CSS, JavaScript, и PHP, которые обеспечивают функциональность консоли и административной части сайта.

wp-content
Папка wp-content содержит все загруженные пользовательские данные и разделяется на другие вложенные папки:

  • languages
  • plugins
  • themes
  • uploads

Папка «languages » содержит файлы переводов и локализации движка в формате.mo и.po. Если вы хотите , вам нужно начинать с этой папки.

Каталог «themes » содержит все загруженные темы (шаблоны).
Вы можете загрузить в эту папку много тем, но активировать сможете только одну тему (не считаем некоторые плагины, которые позволяют активировать больше). Кроме того, каталог «themes » не может быть пустым, так как для WordPress необходима по крайней мере !
По умолчанию папка «themes » уже содержит внутри две темы: Twenty Thirteen и Twenty Fourteen.

Аналогичным образом, «plugins » используется для хранения установленных плагинов на вашем сайте. В отличие от каталога «themes », этот каталог может быть пуст и WordPress будет прекрасно работать без использования каких-либо сторонних плагинов. Вы также можете активировать столько плагинов, сколько необходимо (правда, хорошая практика заключается в установке только необходимых плагинов, поскольку количество установленных плагинов влияет на скорость работы сайта).

Все картинки (и другие медиа-файлы) хранятся в каталоге «uploads », с разбивкой по годам, месяцам и/или дням. Эта папка представляет собой базу данных для всего не-текстового контента: изображения, видео, MP3, PDF-файлы, и т.д.
Сразу после установки WordPress папки «uploads » не будет, она будет создана автоматически после того, как вы начнете загружать медиа-файлы через консоль.

wp-includes
Папка «wp-includes » содержит в себе все основные и необходимые файлы для запуска WordPress через фронтэнд (пользовательский интерфейс). Папка содержит файлы PHP, CSS, JavaScript, и файлы изображений WordPress, которые обеспечивают основные функции программного обеспечения. Другими словами – это ядро движка ВордПресс.

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

Анатомия темы

Теперь от структуры ядра WP перейдем к рассмотрению анатомии темы (шаблона)
Путь к файлам темы следующий /wp-content/themes/название-темы/ .
Основная структура папок темы может включать в себя такие папки, как:

  • /css/ – файлы стилей CSS, которые использует тема; ВАЖНО : файл style.css должен размещаться в корневой папке темы
  • /js/ – файлы JavaScript
  • /images/ – хранит встроенные в тему изображения
  • /languages/ – каталог хранит файлы переводов темы

Есть только два основных файла, которые необходимы :

  • index.php – файл, который создает блог
  • style.css – стилевое оформление блога

Тем не менее, большинство тем включают в себя и другие файлы.
Вкратце разберем основные из них:

  • header.php — глобальный файл, который отображает мета-данные страницы в разделе и меню верхнего уровня.
  • sidebar.php – этот файл отвечает за генерацию боковой колонки сайта. В основном здесь выводятся: список рубрик (категорий), последние записи, теги, различные баннеры.
  • footer.php – этот файл отвечает за вывод футера, нижнего меню, копирайта и закрывает HTML-теги.
  • index.php – это шаблон главной страницы сайта. По умолчанию этот файл отображает список последних постов и подгружает информацию с sidebar.php (сайдбара).
  • single.php – отвечает за отображение отдельных постов. Файл содержит цикл, который запрашивает только один пост и формирует его вывод.
  • page.php – формирует отдельные (статические) страницы (например, «Контакты», «О нас» и т.п.)
  • archive.php – этот файл отвечает за вывод страницы архива записей
  • category.php – формирует шаблон страницы, которая выводит посты по категориями
  • tag.php – шаблон страницы, которая выводит список постов по тегам
  • comments.php – этот файл управляет выводом комментариев
  • functions.php – позволяет добавлять пользовательский код PHP и может влиять на основные элементы темы. Он добавляет функции и расширяет возможности вашего сайта. Работает как плагин WordPress.
  • style.css – основной файл CSS-стилей темы.

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


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

Знание и понимание файловой структуры WordPress в общем случае поможет быстро найти нужный файл – если, например, нужно самостоятельно внести изменения в тему WP, а в более частном (пусть это никогда не пригодится) заметить вредоносные внедрения в структуру вашего сайта.

Итак, заходим на хостинг – не в админку, а именно на хостинг, и через файловый менеджер открываем папку, в которой установлен WP. Найти ее не должно составить труда – название было определено при установке WopdPress. Теоретически зайти можно и через FTP, но для ознакомительных целей этого делать не стоит.

Первое место, куда мы попадаем – корневой каталог WordPress . На фрагменте скриншота приведен пример из панели управления timeweb. Вы можете увидеть что-то другое с точки зрения дизайна, но структура будет одинакова.

Папки

Как правило, в корневом каталоге находятся три папки – wp-content, wp-includes и wp-admin, но как видно из картинки, может быть еще одна – cgi-bin – место, где находятся cgi-скрипты, о которых сейчас мы думать не будем.

wp-admin и wp-includes

В директориях wp-admin и wp-includes находятся CSS, JavaScript, и PHP файлы, необходимые для функционирования вордпресс, их НЕ рекомендуется самостоятельно изменять. Если же хочется экспериментов, то не забывайте делать копии, чтобы иметь возможность восстановить рабочий вариант.

содержимое каталога wp-content

wp-content

Файлы темы хранятся в директории /wp-content/themes/ . Их редактировать можно, но этого делать не стоит, так как после обновления все изменения будут потеряны. Надежнее создать дочернюю тему. Если нужно изменить стили, то почти всегда в админке в настройках темы есть возможность добавить свои стили. Их не затронет обновление и, соответственно, ваши труды не пропадут зря.

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

В /wp-content/plugins/ хранятся установленные и загруженные плагины, если они есть. Если же их нет, то ничего страшного, тема может работать и без плагинов.
Файлы плагинов лучше не трогать. Дополнительный код можно добавить в файл functions.php дочерней темы. Не бойтесь создавать дочернюю тему. Страшно только в первый раз. Помните – если что-то пойдет не так, вы всегда можете вернуться к родительской теме и провести работу над ошибками.

В /wp-content/uploads/ хранится загруженный нетекстовый контент – изображения, видео, MP3, PDF-файлы, и т.п. По умолчанию файлы в папке uploads рассортированы по дате загрузки в подкаталоги вида: /год/месяц/ . Важный момент: обязательно делайте бэкап uploads. Многое можно восстановить достаточно просто из исходников, а вот загрузка и восстановление медиа-контента, даже если у вас есть копии, потребует времени. А уж если копии не сохранились, то это настоящая катастрофа. Да, папка uploads создается не во время установки – поначалу ее не будет, она создастся после того, как вы начнете загружать картинки.

Также в директории wp-content есть и другие папки, созданные по умолчанию:

  • languages – здесь находятся переводы для неанглоязычных сайтов в формате.mo и.po.
  • upgrade – временный каталог, создающийся в процессе обновления.

Многие плагины создают свои собственные фолдеры внутри wp-content. Например, посмотрев внимательно, на скриншоте можно увидеть папку конфигурации плагина W3 Total Cache – w3tc-config .

Внимание! если вы увидите в корне сайта каталоги, отличные от перечисленных выше, даже с самыми безобидными на первый взгляд названиями – вроде site, blog, forum и вы точно знаете, что вы их не создавали – это признак тог, что ваш сайт взломан.

Файлы

Вернемся в корневой каталог и посмотрим на находящиеся там файлы:

В зависимости от настроек темы, здесь могут находиться также:

  • robots.txt – содержит инструкции для поисковых систем
  • favicon.ico – как нетрудно догадаться, это фавиконка

Перечисленные выше файлы предназначены для обеспечения основных операций WordPress. Наиболее значимые из них – .htaccess и wp-config.php:

  • .htaccess – содержит информацию о конфигурации сервера. Обратите внимание – точка в начале имени говорит о том, что это скрытый файл, поэтому его можно не увидеть чрез FTP без дополнительных настроек.
  • wp-config.php – содержит недоступные из консоли администратора настройки WP, включая настройки для базы данных MySQL, секретные ключи, информацию о префиксе базы данных.

Будьте очень осторожны при редактировании wp-config.php или.htaccess. Небольшая ошибка может привести сайт в нерабочее состоянии или сделать его недоступным.

Совет. Перед редактированием файлов wp-config.php или.htaccess сделайте их копии.