Где хранить PHP-файлы, созданные плагином/темами


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

Где должен быть создан этот файл?

Единственное место, которое я могу придумать, это wp-content/uploads/, но это просто звучит неправильно:)

Итак, есть ли безопасное место, где вы можете создавать файлы, и не беспокойтесь о том, что они будут удалены при обновлении WordPress/плагина/темы?

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

Author: onetrickpony, 2011-04-25

6 answers

Подходящим местом для IMHO будет пользовательская папка, которую вы создадите внутри каталога wp-контента. Прочитайте это перед созданием файлов: http://ottopress.com/2011/tutorial-using-the-wp_filesystem/

 10
Author: mfields, 2011-04-25 17:42:52

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

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

 6
Author: Sebi, 2013-11-10 20:39:12

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

 5
Author: fuxia, 2011-04-25 17:48:44

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

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

Gravity Forms хранит загруженные файлы формы в своей собственной папке внутри загрузок. Общий кэш W3 использует wp-контент, перенаправление входа использует метод, который я описал выше.

 3
Author: Chris_O, 2011-04-27 10:28:01

Если вам необходимо создать файлы (например, временные файлы для плагина CAPTCHA), вам определенно следует использовать \wp-content\uploads\ (или пользовательский каталог, такой как \wp-content\plugin-slug-files\).

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

 1
Author: Chip Bennett, 2011-04-25 17:43:46

Я всегда предлагаю совместимый с PSR-0 загрузчик и папку библиотеки, которая просто работает.

Некоторые пользователи WP могут застрелить вас, но, возможно, вы не сосредоточены на этих пользователях, так что это может быть вариантом. Особенно, если вы получаете все больше и больше библиотек для конкретных поставщиков.

 1
Author: hakre, 2011-04-29 14:58:52