Де зберігати PHP-файли, створені плагіном / темами


12

Бувають випадки, коли плагіну чи темі потрібно десь створити файл php, який згодом може включити його. Наприклад, плагін captcha, або якась шаблонна система на кшталт twig / smarty (У моїй ситуації це простий шаблон двигуна для колекції віджетів).

Де слід створити цей файл?

Єдине місце, про яке я можу подумати - це wp-content/uploads/, але це просто не правильно :)

Тож чи є безпечне місце, де ви можете створювати файли, і не хвилюєтесь про їх видалення під час оновлення WordPress / плагіна / теми?

Одним з рішень може бути створення дочірньої теми / каталогу в каталозі теми / плагіни ...

Відповіді:



5

Ви не можете розраховувати на доступ до запису в каталозі плагінів або тем, тому wp_upload_dir () - єдиний можливий каталог.
Але я дуже сумніваюся, що є необхідність зберігати інформацію в новому файлі. Якщо шаблон створений користувачем, збережіть його у варіанті, щоб проаналізувати вміст за допомогою звичайних функцій плагіну (наприклад, замінивши заповнювачі на місця strtr()).


так, це добре для заміни змінних (у мене зараз щось подібне). Але якщо ви також хочете дозволити користувачеві використовувати умовні теги, такі як IF або
циклізувати

5

Працюючи над плагіном Wordpress, я натрапив на ваше запитання. Я також спочатку подумав про створення тимчасових файлів для кешування деяких даних, які мій плагін створював. Однак, трохи більше подумавши, такий підхід мені здається дивним, оскільки ви не хочете, щоб тимчасові дані лежали на одному сервері, якщо ви намагаєтеся масштабувати їх за допомогою кластеру серверів.

Тому я знову шукав, і, здається, правильним рішенням таких проблем є API Wordpress Transients, що дозволяє зберігати дані в базі даних з терміном придатності. Звичайно, ваша проблема все ще може вимагати локально кешованих файлів, наприклад, якщо вони занадто великі для бази даних, але, принаймні, я пропоную також поглянути на цей варіант :-)


3

Я можу придумати лише кілька вагомих причин, які плагіну знадобиться створити файл. Одне - створити резервну копію складних варіантів, які користувач може експортувати та завантажувати, щоб перейти на новий сайт. Інший - плагін для sitemap.

Якщо у вашому плагіні є шаблонні файли, які користувач може налаштувати, ви маєте надати користувачеві можливість перемістити налаштований файл у поточну тему каталогу, щоб після оновлення плагіна вони не перезаписувались. Ви можете спробувати завантажити файли спочатку з каталогу тем, а потім повернутися до каталогу плагінів.

Gravity Forms зберігає завантажені файли у власній папці всередині завантажень. W3 Total Cache використовує wp-content, переадресація входу використовує метод, описаний вище.


1

Якщо вам потрібно створити файли (наприклад, тимчасові файли для плагіну CAPTCHA), ви обов'язково повинні використовувати \wp-content\uploads\(або спеціальний каталог, наприклад \wp-content\plugin-slug-files\).

Більшість інших спеціальних кодів дійсно слід зберігати в Базі даних.


1
і eval()це? ніяк ...
onetrickpony

Що вам потрібно eval()?
Чіп Беннетт

подумайте, наприклад, про розумних. Скажімо, ви створюєте віджет, і ви хочете, щоб користувач мав можливість налаштувати вихід у будь-якому разі. Таким чином, ви додаєте текстову область у параметри віджетів, де користувач може написати свій власний розумний шаблон для цього віджета. Цей шаблон потрібно скласти, і найкращий спосіб зробити це - генеруючи файл PHP і включивши його у віджет.
onetrickpony

Це звучить як значна ділянка передбачуваного використання віджетів / опцій віджетів ...
Chip Bennett

1
Звичайно, ні. Але IMHO, якщо користувачеві потрібна така гнучкість у створенні користувальницьких віджетів, тоді користувач повинен написати спеціальний плагін або додати спеціальний код віджету до свого файлу function.php Theme. Чому плагін, який створює віджети, дозволяє користувачам створювати інші віджети?
Чіп Беннетт

1

Я завжди пропоную сумісний автоматичний завантажувач PSR-0 та папку бібліотеки, яка просто працює.

Деякі користувачі WP можуть вас потім знімати, але, можливо, ви не зосереджені на цих користувачах, тому це може бути варіантом. Особливо, якщо ви отримуєте все більше і більше специфічних для продавця губ.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.