Создание каталога в загрузках - wp_mkdir_p () или WP_Filesystem?


9

Я не думаю, что мне когда-либо приходилось создавать папки / файлы в WP, но для плагина мне нужна папка с кешем (для изображений с измененным размером) wp-content/uploads.

В связи с этим возникает вопрос - действительно ли мне нужно пройти через весь процесс Filesystem API(включая беспорядочно запрашивать учетные данные FTP при необходимости), или wp_mkdir_p()достаточно для этого?

Ответы:


7

wp-content/uploads/должен быть доступен для записи на сервере (иначе было бы невозможно загрузить файл, нет?). Если вы собираетесь создать что-то в этом каталоге, его можно использовать безопасно wp_mkdir_p().

Я бы использовал, только WP_Filesystemесли есть шанс, что у сервера нет прав на запись в местоположение, например, в wp-content/plugins/, которое не должно быть доступно для записи для сервера (по крайней мере, я думаю, что это не должно быть?).

Примечание. На странице «Права доступа к файлам» Кодекса также говорится о wp-content/cache/каталоге. Будет ли это «более стандартным» местом для файлов кэша?


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

6

Я бы попробовал что-то простое, прежде чем возиться с бесконечным морем возможностей / настроек хостинга:

$target = 'wherever';
wp_mkdir_p( $target );

if ( wp_mkdir_p( $target ) === TRUE )
{
    echo "Folder $target successfully created";
}
else
{
    new WP_Error; #... etc. Just tell where the user has to make a new folder with the name xy
    // or if you're kool, you use _doing_it_wrong(); ... ;-)
}

Кстати, это не проверялось, и я не имел ни малейшего представления о том, wp_mkdir_p();может ли быть сохранена проверка после выполнения или должна ли выполняться команда fn внутри оператора if ... (никогда не использовала его раньше и даже не знала о самой функции до сейчас же).
Кайзер

Связанная функциональность является своего рода back-end-ish ... Я хотел бы минимизировать интерактивность. Хотя сообщение в настройках плагина стоит учесть.
Первый день

Я бы не стал слишком много думать об этом. Если пользователи не могут сделать это со значениями по умолчанию, попробуйте сказать им, что делать. Как я уже сказал: «Возможности бесконечны, и имхо, вам лучше просто рассказать, каким должен быть результат, чтобы продолжить, чтобы попытаться решить эту проблему с помощью кода или поддержки».
Кайзер

4

Просто напишите, что ваш плагин создает файлы / папки: мой плагин тоже так делал, и я столкнулся с множеством проблем с правами доступа к файлам для разных пользователей. Некоторые из них Windows, некоторые Unix, некоторые размещены, а некоторые доморощенные. Когда я поделился плагином, это было мое письмо поддержки # 1.

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


Да, я понимаю это, поэтому я пытаюсь задать вопрос. Мой текущий обзор проблемы заключается в том, что, если uploadsWP заблокирован достаточно для сбоя WP, то нет никакого смысла для плагина, чтобы попытаться сделать больше. И если он достаточно хорош для WP, то он достаточно хорош для плагина. К счастью, мне просто нужен каталог кэша в любом месте, а не что-то более сложное и подверженное ошибкам.
Первое
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.