it-swarm.com.ru

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

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

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

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

Так есть ли безопасное место, где вы можете создавать файлы и не беспокоиться об их удалении при обновлении WordPress/plugin/theme?

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

11
onetrickpony

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

8
mfields

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

5
fuxia

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

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

5
Sebi

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

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

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

3
Chris_O

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

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

1
hakre

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

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

1
Chip Bennett