WordPress как на ладони
Шаблоны, плагины и темы для настоящих поклонников Elementor. От TemplateMonster.com wordpress jino

Папка wp-content

WordPress состоит из 3 папок wp-includes, wp-admin, wp-content и из нескольких файлов рядом с этими папками. Все файлы и две папки, кроме wp-content — это и есть сам WordPress, движок.

Т.е. каталоги: wp-includes и wp-admin — это ядро WordPress, а wp-content — это все остальное — все пользовательские данные...

В директории wp-content хранятся практически все пользовательские файлы, кроме файла конфигурации wp-config.php, который является неотъемлемой частью ядра/движка. Здесь находятся плагины, темы, файлы плагинов, тем и содержимого сайта. Тут же принято хранить все файлы связанные с расширением возможностей WordPress.

В дистрибутиве WordPres wp-content содержит один файл index.php и 3 папки: plugins, themes, languages.

файл index.php должен находиться в wp-content всегда. Вот его содержимое:

<?php // Silence is golden.

Зачем же он нужен? Он запрещает видеть список файлов в папке. Если index.php не существует, а ваш веб-сервер позволяет смотреть файлы в директориях, то пройдя по ссылке http://site.ru/wp-content, можно увидеть все файлы и папки в этой директории. Это могут использовать хакеры, чтобы получить доступ к файлам ключей, что позволит взломать сайт. Например, если у вас установлен уязвимый плагин, то сайт можно будет легко проверить на наличие этого уязвимого плагина, а дальше атакующий быстро сможет взломать сайт.

При обновлении WordPress вручную, никогда не трогайте папку wp-content и ничего в ней. Она к обновлению WordPress никакого отношения не имеет.

Список того, что может находиться в каталоге wp-content:

/plugins — плагины

Плагины находятся в директории wp-content/plugins. Плагин может представлять собой один или несколько файлов внутри папки. Любые файлы в директории /plugins сканируются WordPress, чтобы определить, является ли файл файлом плагина. Если файл определяется как плагин, он появляется в админ-панели в разделе «Плагины» и готов к активации.

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

меню

/mu-plugins — обязательные плагины

В WordPress есть также «Обязательные плагины», они находится в директории wp-content/plugins. О них я писал отдельную стать, обязательно ознакомьтесь. А тут я скажу о них коротко:

Обязательные к использованию плагины (Must-use plugins), известные также под названием mu-plugins — это плагины, которые устанавливаются в специальную папку mu-plugins в каталоге контента wp-content и активируются автоматически (всегда активны) для сайта и сайтов сети. Эти плагины не видно среди обычных плагинов. В админ-панели они отображаются в верхней информационной строке и их невозможно отключить, кроме как удалить файл плагина из каталога wp-content/mu-plugins.

меню

/themes — темы

Темы хранятся в директории wp-content/themes. Каждая тема должна находиться в собственной папке и содержать правильно оформленный файл style.css, чтобы WordPress распознал ее как тему, пригодную для использования. В директории темы должны находиться как минимум 2 файла: index.php и style.css.

WordPress может хранить в этой директории сколько угодно тем. Вы можете легко посмотреть любую имеющуюся тему или активировать её во вкладке Внешний вид ► Темы в админ-панели.

/uploads — медиафайлы и загрузки

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

По умолчанию WordPress хранит загрузки в папке по месяцам и годам:

/wp-content/uploads/2012/06/image.png

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

Директория uploads должна иметь все права, чтобы в ней можно было свободно создавать и удалять файлы, обычно это права 777.

WordPress НЕ умеет распознавать и импортировать в админку изображения загруженные в uploads напрямую (не через админку). И в библиотеке файлов WordPress такие файлы не отображаются — WordPress о них ничего не знает.

uploads в Multisite

В Multisite установке для основного сайта фалы загружаются как обычно. А для всех дополнительных сайтов, создается папка /wp-content/uploads/sites/2, где 2 - это ID сайта сети.

Так для каждого сайта создается папка с его ID в папке /wp-content/uploads/sites. Далее файлы также располагаются в папках по году и месяцу.

Такой подход позволяет разделить загрузки для каждого сайта и упрощает их обслуживание.

До версии WP 3.5 файлы дополнительных сайтов располагались не в /wp-content/uploads/sites, а в /wp-content/blogs.dir.

Так например, директория для сайта с ID 3 выглядит так:

  • WP 3.5 и выше: /wp-content/uploads/sites/3
  • WP 3.4 и ниже: /wp-content/blogs.dir/3
Перемещение папки uploads

Чтобы переместить папку uploads нужно определить константу UPLOADS в wp-config.php так:

define('UPLOADS', 'uploads'); // значит что папка uploads должна лежать в корне сайта

Или можно изменить опции: 'upload_path' и 'upload_url_path' в таблице опций (см. update_option()).

Перемещать папку uploads не рекомендуется, об этом я писал в статье: Баг с перемещением папки uploads.

меню

/upgrade — автообновления

Директория wp-content/upgrade создается WordPress автоматически при обновлении WordPress. Эта папка используется для хранения новой версии WordPress, скачанной с WordPress.org. Перед обновлением, WordPress скачивает архив и извлекает его содержимое в эту папку. Чтобы процесс автоматического обновления протекал успешно, рекомендуется не трогать эту папку. Если данная директория удалена, WordPress создаст её при следующем обновлении.

/languages — переводы

Каталог wp-content/languages присутствует только в том случае, если вы устанавливаете не английскую версию WordPress. В нем содержаться все файлы локализации (перевода) WordPress. Такие файлы имеют расширения:

  • .mo - сжатая версия аналогичного .po файла, которая используется при переводе;
  • .po - исходный файл перевода. Этот файл можно использовать для редактирования перевода. После редактирования его нужно скомпилировать в сжатую версию с расширением .mo.

Также в languages могут находиться специальные поддиректории:

  • /pliugns — содержит переводы плагинов. Файл перевода должен иметь формат: название плагина-локаль.mo, например: akismet-ru_RU.mo. Перед загрузкой своего файла перевода, плагин проверяет наличие файла перевода в этой папке и если он там есть, то используется этот файл перевода, а не родной перевод плагина.

  • /themes — содержит переводы тем. Файл перевода должен иметь формат: название темы-локаль.mo, например: twentyfifteen-ru_RU.mo. Также как и с плагинами — эти файлы имеют больший приоритет перед родными файлами перевода темы.
меню

Произвольные директории

В /wp-content можно создавать любые директории. Некоторые плагины, создают такие папки для хранения файлов. Обычно отдельная папка создается, когда нужно хранить много файлов или когда хранимые файлы как-то отличаются от остальных.

Например плагин WP Super Cache создает директорию /wp-content/cache для хранения кэшированных страниц сайта. Кэшированная страница — это сгенерированная страница сайта, сохраненная как статический файл HTML. При обращении к такой странице она не генерируется повторно, а отдается статический файл. Это и есть страничный кэш, который уменьшает нагрузку сервера в десятки раз, поскольку страницы не генерируются при каждом просмотре, а создаются только когда кэш перезаписывается.

Плагин WP Super Cache также добавляет два файла в директорию wp-content: advanced-cache.php (специальный) и wp-cache-config.php. Они нужны для работы WP Super Cache.

Другой пример, популярный плагин для галерей — NextGen Gallery — создает директорию /wp-content/gallery для хранения изображений, загруженных в галереи. Каждая созданная галерея представляет собой поддиректорию /gallery.

Еще пример, мой плагин Kama Thumbnail, который также создает папку /wp-content/cache/thumb и записывает в нее созданные файлы миниатюр.

меню

Специальные файлы

advanced-cache.php

Вызывается на самом раннем этапе загрузки WordPress, в файле wp-settings.php, если константа WP_CACHE включена. Вот так выглядит вызов:

// Для использования плагинами кэширования. Использует статический файл для обрыва работы скрипта.
if ( WP_CACHE )
	WP_DEBUG ? include( WP_CONTENT_DIR . '/advanced-cache.php' ) : @include( WP_CONTENT_DIR . '/advanced-cache.php' );

Этот файл используется плагинами страничного кэширования. В нем обычно проверяется наличие подходящего файла кэша и если он есть, то он выводиться на экран и работа скрипта обрывается. Это позволяет не загружать 90% файлов WordPress и отдавать статические HTML файлы.

меню

object-cache.php

Вызывается из функции wp_start_object_cache(), которая в свою очередь вызывается из файла wp-settings.php чуть позднее advanced-cache.php. В отличии от advanced-cache.php, object-cache.php срабатывает всегда, если он существует. Он нужен, чтобы переопределить работу базового кэширования объектов WordPress.

На основе этого файла работают такие кэши объектов как: Memcache, Memcached, APC, XCache.

Вызов выглядит так:

// Запускает объектное кэширование WordPress или внешнее объектное кэширование, если существует специальный файл.
wp_start_object_cache();
меню

maintenance.php

wp-content/maintenance.php отвечает за вывод страницы-заглушки, которая показывается в момент автообновления WoordPress. Такая страница определена по умолчанию и за её вывод отвечает функция wp_maintenance(). Но если создать файл maintenance.php в wp-content, то за вывод страницы-заглушки будет отвечать содержимое этого файла.

В maintenance.php нужно описать страницу-заглушку по всем правилам HTML.

Подробнее читайте в описании функции wp_maintenance()

db-error.php

Позволяет показать произвольный шаблон страницы ошибки соединения с базой данных.

Если файл существует в папке wp-content - wp-content/db-error.php, тогда вместо дефолтного сообщения WordPress об ошибки соединения с базой данных будет загружен этот файл. В файле нужно создать HTML код страницы об ошибке!

Страница об ошибке подключения должна устанавливать статус ответа 500, чтобы поисковики не обрабатывали контент.

Файл db-error.php вызывается функцией dead_db(), а функция в свою очередь вызывается при ошибке подключения к БД.

Пример такой страницы смотрите здесь.

меню

sunrise.php

Загружается только для мультисайтовой сборки, т.е. когда срабатывает условие is_multisite() и при этом определена константа 'SUNRISE' (её нужно определить в файле wp-config.php).

Файл wp-content/sunrise.php позволяет на раннем этапе изменить логику работы сайта в сети мультисайт. Например, тут можно установить глобальные переменные $current_site,
$current_blog определяющие текущий сайт сети. Или можно изменить префикс таблиц БД - переменная $table_prefix.

Также в файле sunrise.php можно изменить константы отвечающие за то, где находится каталоги MU плагинов или обычных плагинов. см. wp_plugin_directory_constants()
.

sunrise.php подключается еще до константы SHORTINIT.

sunrise.php подключается в файле wp-includes/ms-settings.php, который в свою очередь подключается в основном загрузочном файле wp-settings.php.

меню

Переименование или перемещение папки wp-content

В некоторых случаях, например, для уникализации многих URL на всем сайте или для объединения структуры сайта с другим скриптом, или по каким-то еще причинам, нужно чтобы каталог wp-content назвался по-другому или чтобы он находился в другой директории.

Переместить или переименовать wp-content очень просто. Для этого нужно открыть конфигурационный файл wp-config.php, который лежит в корне вашего сайта и определить в нем две константы:

  • WP_CONTENT_DIR — путь до каталога контента;
  • WP_CONTENT_URL — URL на каталог контента.
define('WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] .'/data');
define('WP_CONTENT_URL', 'http://'. $_SERVER['HTTP_HOST'] .'/data');

Данный код переименовывает wp-content в data.

15 комментов
Полезные 1 Вопросы 1 Все
  • Алексей cайт: webdevfreaks.ru

    Отличная статья. Спасибо тебе за то, что ты делаешь. Я частенько использую твой сайт, для чтения мануалов по стандартным функциям wordpress'a

    Ответить2.1 года назад #
  • @ VITALY cайт: tvoymoy-dieta.ru

    где хранятся опубликованые статьи?

    Ответить2 года назад #
  • Светлана cайт: www.psysolo.ru

    Спасибо за статью! Меня насторожило появление файлов advanced-cache.php и wp-cache-config.php. Так как сайт недавно взломали, подумала было что опять что-то чужеродное, но оказывается, все в порядке.

    Ответить1.8 год назад #
  • sHugar

    Получается, через ftp нету доступа к базе данных с постами?

    Ответить1.7 год назад #
    • campusboy2995 cайт: www.youtube.com/c/wpplus

      Конечно. С чего бы он был? По ftp вам доступны файлы сайта, а база хранится в другом месте (у ней свой отдельный сервер) и по ftp она недоступна.

      Ответить1.7 год назад #
    • Kama6811

      Вы про какой доступ? Про визуальный интерфейс phpMyAdmin? Если про него то campusboy правильно ответил - нет.

      А вообще, доступ к базе есть через PHP код, через $wpdb.

      Ответить1.6 год назад #
  • Alex cайт: kinohere.ru

    Спасибо тебе wp;-kama за то что ты есть и радуешь людей!

    Ответить1.1 год назад #
  • Владимир cайт: visualcommunication.ru

    Срочно вопрос!!! Загрузил картинки они грузятся на странице с адреса https://visualcommunication.ru/wp-content/uploads.
    wp-content закрыт от индексации, картинки получается не индексируются???
    Но есть постоянные ссылки когда непосредственно нажимаешь на картинку.
    Что делать??? Спасибо

    • Игорь cайт: it-hr.ru

      Добрый день! По идее все просто, убираете в robots.txt
      /wp-content/ и будет индексироваться.

      1
  • forumroditeley.ru cайт: forumroditeley.ru

    Мне казалось, что файл индекс с голден сайлент это лишнее. Спасибо. буду знать!

  • Kama, привет. Помоги пожалуйста с решением. Делаю систему по загрузке больших xml файлов узлы которых формируются в посты и каждный узел содержыт ссылки на изображения, соответственно от одного xml может быть в сумме по 50 000 рисуноков примерно. Проблема в том что на сайт это все грузиться в одну директорию со стандартной структурой вордпресса, наример в uploads/2018/01 и если грузить несколько xml, то в етой папке выходит минимум 100 тыс. изображений. Даже при объеммах 20 тысяч фото в папке, скрипт формирования изображений при загрузке их в эту папку во время ее индексации и доступа к ней уже стает в ожидание и виснет,и чем больше фото тем хуже...Планирую сделать что то иерархии папок в папке месяцев uploads/2018/01 для кажднного xml, и в папке 01 для каждного отдельного xml на каждные 1000 изображений создавать новую подпапку, или что то похожее. Наверное такую новую структуру папок прийдется подстроить под архитектуру вп какими то фильтрами что б эти изображения подтягивались в посиы. Можешь посоветовать какие то мотоды для такого решения и как поступить?

  • red

    Спасибо

  • Tony

    Не, ну вот молодец же ведь Кама,да? - Ну еще бы! good2

    Ответить2 месяца назад #
Здравствуйте, !     Войти . Зарегистрироваться