Папка 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 — обов’язкові плагіни
  • /plugins – плагіни
  • /themes – теми
  • /uploads – медіафайли та завантаження
  • /upgrade – автооновлення
  • /languages – переклади
  • Довільні директорії
  • Спеціальні файли
  • advanced-cache.php
  • object-cache.php
  • maintenance.php
  • db-error.php
  • sunrise.php
  • db.php

/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 не рекомендується.

/upgrade – автооновлення

Директорія wp-content /upgrade створюється WordPress автоматично при оновленні WordPress. Ця папка використовується для зберігання нової версії WordPress, завантаженої з WordPress.org. Перед оновленням, WordPress викачує архів і витягує його вміст в цю папку. Щоб процес автоматичного оновлення протікав успішно, рекомендується не чіпати цю папку. Якщо дана директорія видалена, WordPress створить її при наступному оновленні.

/languages – переклади

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

.mo – стисла версія аналогічного .po файлу, яка використовується при перекладі;
.po – вихідний файл перекладу. Цей файл можна використовувати для редагування перекладу. Після редагування його потрібно скомпілювати в стислу версію з розширенням .mo.

Також в languages можуть перебувати спеціальні піддиректорії:

/pliugns – містить переклади плагінів. Файл перекладу повинен мати формат: назва плагіна – локаль .мо, наприклад: akismet-ru_RU.mo. Перед завантаженням свого файлу перекладу, плагін перевіряє наявність файлу перекладу в цій папці і якщо він там є, то використовується цей файл перекладу, а не рідний переклад плагіна.

/themes – містить переклади тем. Файл перекладу повинен мати формат: назва теми – локаль .мо, наприклад: 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.

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

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.

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.

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 = new 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.

Оцініть статтю
Додати коментар