web-dev-qa-db-fra.com

Création d’un répertoire dans les fichiers téléchargés - wp_mkdir_p () ou WP_Filesystem?

Je ne pensais pas avoir eu le besoin pratique de créer des dossiers/fichiers dans WP auparavant, mais pour un plugin, j'ai besoin du cache (pour les images redimensionnées) dans le dossier wp-content/uploads.

Ce qui soulève la question - est-ce que je dois vraiment passer par tout le processus avec Filesystem API (y compris en demandant de manière désordonnée des informations d'identification FTP si nécessaire), ou bien - wp_mkdir_p() est-il suffisant pour cela?

9
Rarst

wp-content/uploads/ devrait être accessible en écriture pour le serveur (sinon, il serait impossible de télécharger un fichier, non?). Si vous voulez créer quelque chose sous ce répertoire, vous pouvez utiliser wp_mkdir_p() en toute sécurité.

Je n'utiliserais que WP_Filesystem s'il y a une chance que le serveur ne dispose pas des autorisations nécessaires pour écrire dans l'emplacement, comme dans wp-content/plugins/, ce qui ne doit pas nécessairement être accessible en écriture pour le serveur (du moins, je pense que cela ne doit pas nécessairement l'être?) .

Sidenote: La page File Permissions du Codex parle également d’un répertoire wp-content/cache/. S'agirait-il d'un emplacement "plus standard" pour les fichiers de cache?

7
Jan Fabry

Je voudrais essayer quelque chose de simple, avant de déconner avec une mer infinie de possibilités/configurations d'hébergement:

$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
kaiser

Juste une alerte pour que votre plugin crée des fichiers/dossiers: mon plugin l’a également fait, et j’ai rencontré beaucoup de problèmes avec les autorisations de fichiers pour différents utilisateurs. Certains sont des fenêtres, certains sont unix, d'autres sont hébergés et d'autres sont développés à la maison. C’était mon email de soutien n ° 1 une fois que je partageais le plugin.

J'ai refactoré mon code pour minimiser le besoin de toucher les systèmes de fichiers et le répertoire de téléchargement est le SEUL que j'utilise maintenant pour éviter de tels problèmes.

4
user6479