Папка 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.

Вихідно в WordPress, wp-contentмістить один файл index.php і 3 папки: plugins , themes , languages .

Файлwp-content/index.php

Завжди повинен існувати і повинен мати такий вміст:

<?php // Silence is golden.

Цей файл забороняє бачити список файлів у папці. Якщо index.php не існує, а ваш веб-сервер дозволяє дивитися файли в директоріях, то, пройшовши за посиланням http://example.com/wp-content, можна побачити всі файли та папки в цій директорії. Це можуть використовувати хакери, щоб отримати доступ до файлів ключів, що дозволить зламати сайт. Наприклад, якщо у вас встановлений вразливий плагін, то сайт можна буде легко перевірити на наявність цього вразливого плагіна, а далі атакуючий без особливих зусиль зможе зламати сайт.

При оновленні WordPress вручну ніколи не чіпайте папку wp-content і нічого в ній. Вона до оновлення WordPress жодного стосунку не має.

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


/mu-plugins – обов’язкові плагіни

У WordPress є “Обов’язкові плагіни”, вони знаходяться в директорії wp-content/mu-plugins. Про них я писав окремо , обов’язково ознайомтеся!

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


/plugins – плагіни

Плагіни знаходяться в директорії wp-content/plugins. Плагін може являти собою один файл або кілька файлів усередині папки. Будь-які файли в директорії /pluginsскануються WordPress, щоб визначити, чи файл є файлом плагіна. Якщо файл визначається як плагін, він з’являється в адмін-панелі розділу «Плагіни» і готовий до активації.

Для деактивації плагіна можна видалити плагін із папки /plugins. Також можна перейменувати назву папки, у цьому випадку WordPress просто не зможе знайти файл плагіна і деактивує під час спроби підключення. Але майте на увазі, що плагіни краще видаляти з адмін-панелі через кнопку Видалити, тому що при видаленні спрацьовують деякі функції, які підчищають дані плагіна в базі даних або у файлах.


/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 && apply_filters( 'enable_loading_advanced_cache_dropin', true ) && file_exists( WP_CONTENT_DIR . '/advanced-cache.php' ) ) {
	// Для використання плагінами кешування. Використання статичного файлу для обриву роботи скрипта.
	include WP_CONTENT_DIR . '/advanced-cache.php';

	// Re-initialize any hooks added manually by advanced-cache.php.
	if ( $wp_filter ) {
		$wp_filter = WP_Hook::build_preinitialized_hooks( $wp_filter );
	}
}

Цей файл використовується плагінами сторінкового кешування. У ньому зазвичай перевіряється наявність відповідного файлу кеша і якщо він є, він виводитися на екран і робота скрипта обривається. Це дозволяє не завантажувати 90% файлів WordPress та віддавати статичні HTML файли.


object-cache.php

На відміну від спрацьовує завжди advanced-cache.php, object-cache.phpякщо він існує. Він потрібний, щоб перевизначити роботу базового кешування об’єктів WordPress.

Викликається з функції wp-settings.php трохи пізніше advanced-cache.php.

На основі цього файлу працюють такі кеші об’єктів як: Memcache, Memcached , APC , XCache .

Виклик виглядає так:

// Запускає об'єктне кешування WordPress або
// Зовнішнє об'єктне кешування, якщо існує спеціальний файл.
wp_start_object_cache();

З версії WP 5.8 з’явився хук enable_loading_object_cache_dropin , який дозволяє вимкнути плагін об’єктного кешування. Хук викликається раніше ніж завантажуються плагіни і потрібен коли код запускається не з Інтернету, наприклад при тестах.

Читайте докладніше про Об’єктний кеш .


maintenance.php

wp-content/maintenance.phpвідповідає за виведення сторінки-заглушки, яка відображається в момент автооновлення WoordPress. Така сторінка визначена за умовчанням і її висновок відповідає функція wp_maintenance() . Але якщо створити файл maintenance.php в wp-content , то за виведення сторінки-заглушки відповідатиме вміст цього файлу.

У maintenance.php потрібно описати сторінку-заглушку за всіма правилами HTML.

Докладніше читайте в описі функції wp_maintenance()


db-error.php

Дозволяє показати довільний шаблон сторінки помилки з’єднання з базою даних.

Якщо файл wp-content/db-error.phpіснує в папці wp-content, тоді замість дефолтного повідомлення 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-settings.php .


db.php

Дозволяє переписати двигун роботи з БД. Якщо файл існує в папці wp-content, він буде викликаний до створення підключення до БД. Далі, якщо в цьому файлі визначити змінну $wpdb , то саме вона використовуватиметься як глобальна змінна для роботи з БД.

Завдяки такій логіці, наприклад, можна розширити базовий клас wpdb{} або повністю його замінити.

Приклад розширення базового класу wpdb{} :

<?php

// це код для файлу db.php, який лежить у папці wp-content

defined( 'ABSPATH' ) || die();

if ( defined( 'DOING_CRON' ) && DOING_CRON )
	return;

class MY_DB extends wpdb {

	public function __construct( $dbuser, $dbpassword, $dbname, $dbhost ) {

		// Додатковий код...

		parent::__construct( $dbuser, $dbpassword, $dbname, $dbhost );

	}

	// перевизначаємо метод wpdb::query()
	public function query( $query ) {

		// наш змінений код
	}

}

$wpdb = новий QM_DB( DB_USER, DB_PASSWORD, DB_NAME, DB_HOST );


Перейменування або переміщення папки 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 .

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *