Создание каталога в загрузках - wp mkdir p() или файловая система WP?


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

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

Author: Rarst, 2011-05-19

3 answers

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

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

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

 7
Author: Jan Fabry, 2011-05-19 15:34:59

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

$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(); ... ;-)
}
 6
Author: kaiser, 2011-05-19 15:02:59

Просто предупреждаю, что ваш плагин создает файлы/папки: мой плагин тоже это сделал, и я столкнулся с множеством проблем с разрешениями на файлы для разных пользователей. Некоторые из них - windows, некоторые - unix, некоторые размещены на хостинге, а некоторые выращены дома. Это было мое электронное письмо поддержки № 1, как только я поделился плагином.

Я переработал свой код, чтобы свести к минимуму необходимость прикасаться к файловым системам, и каталог загрузки - ЕДИНСТВЕННЫЙ, который я сейчас использую, чтобы избежать подобных проблем.

 4
Author: user6479, 2011-06-24 15:33:09