Різниця між головним файлом плагіну та кулею плагіна - це місце, де WordPress Codex може зробити набагато краще. Я розумію вашу розгубленість, оскільки я відчував це зовсім недавно (змішаний з розладом).
Це я дізнався, виконуючи якусь "детективну роботу" над основним кодом WordPress.
Файл плагіна
Це унікальний спосіб WordPress ідентифікувати та записувати плагін. Він складається з каталогу плагінів І основного файла плагінів (файлу із заголовком файлу, що містить різні деталі плагіна, такі як версія, автор тощо).
Це виглядатиме приблизно так: your-plugin-directory/main-file.php
Якщо ви подивитеся на дані активних плагінів (повернені get_option( 'active_plugins' )
), ви побачите, що WordPress цей файл плагінів потребує лише для належної ідентифікації плагінів.
Ви можете вибрати його як основний відносний шлях вашого додатка (щодо wp-content/plugins/
каталогу, який є). Ви можете "скласти" абсолютний шлях до основного файлу плагінів приблизно так:trailingslashit( WP_PLUGIN_DIR ) . $plugin_main_file
Ядро генерує файл плагіна так:
$plugin_main_file = plugin_basename( trim( $plugin_main_file_absolute_path ) );
Плагін-слизь
Можна було б очікувати, що плагін "slug" буде деяким стандартизованим ідентифікатором для плагіна, як повідомлення для службових служб для публікацій - так що ви можете використовувати цей "slug", щоб забезпечити його основними функціями WordPress і впорядкувати справи.
Не зовсім. Після пошуку ядра для посилань на плагіни (або теми для того, що має значення) і майже нічого не знайдено, я думаю, що я зрозумів це.
Єдині справжні слизи - це речі, доступні за допомогою унікальної URL-адреси: публікації, сторінки, систематики тощо. Це вся суть у тому, щоб взяти назву чогось (наприклад, заголовок публікації) та створити URL-адресу, зручну для цього: використовувати це в URL-адресі.
Але де ми використовуємо тему / плагіни "кулі" в URL-адресах?
Ми цього не робимо в окремих установках WordPress - ні в адміністраторі WP, ні у фронталі.
Однак, там дуже сильно заплутався код WordPress, сайт WordPress.org. Людям важко розмежувати обидва, в тому числі те, що серед розробників стало якимось звичним вважати тему WordPress.org, або плагіни повинні працювати так само, як і публікація сторінки.
Вони служать тій самій цілі, але на окремих веб-сайтах. На WordPress.org вони використовуються для унікальної ідентифікації теми від інших, а також плагіна від інших (у таких URL-адресах https://wordpress.org/plugins/akismet/
).
Але якщо мова йде про окремі установки WordPress, то не можна гарантувати однакову унікальність, оскільки не існує повноважень щодо їх застосування (як на WordPress.org). Це може спрацювати, якби всі плагіни та теми надходили з WordPress.org, але, на щастя, це не так.
Що робить WordPress-код із темою / плагінами?
Основний код WordPress не покладається на тему / плагіни, щоб робити такі речі, як установка, активація, оновлення, видалення тем чи плагінів.
Що стосується тем, він покладається на каталог тем, оскільки основною точкою входу до теми є style.css
файл (ви не можете використовувати інший файл CSS для утримання заголовка деталей теми).
Для плагінів він покладається на каталог плагінів І на головний файл плагінів , оскільки плагіни можуть викликати їх основний файл, як би вони не хотіли.
Єдине, для чого ядро використовує теги / плагіни-слуги, - це обробка тем і плагінів з каталогу WordPress.org: отримання списків плагінів, перевірка наявності оновлень, звітування про дані використання каталогу тощо.
Для завершення речей щодо плагінів: щоразу, коли ви знайдете дані плагіну із slug
записом, 99% часу буде спрямовано на слуп WordPress.org плагіна.
Як ми можемо ідентифікувати плагіни?
Якщо ви хочете програмно активувати, оновити, дезактивувати або видалити певний плагін під час встановлення WordPress, вам потрібно скористатися файлом плагіна. Ви можете отримати його так у головному файлі додатка:
$plugin_file = plugin_basename( __FILE__ );
Якщо ви хочете націлити певний плагін з іншого плагіна, все стає трохи складніше, оскільки вам потрібно покластися на «здогадки».
Ви можете жорстко кодувати ім'я плагіна, шукати плагін у списку всіх плагінів (див. Get_plugins () ) та дістати звідти файл плагіна.
Якщо ви знаєте клас або функцію, яку визначає цей плагін, ви можете використовувати відображення (див. Цю відповідь для класів і цю для функцій).
Я сподіваюся, що це допоможе вам та іншим, хто може важко мати справу з "плагінами". Це могло врятувати мене пару годин :)