Criando o diretório nos uploads – wp_mkdir_p () ou WP_Filesystem?

Eu não acho que eu já tive necessidade prática de criar pastas / arquivos no WP antes, mas para um plugin eu preciso de pasta cache (para imagens redimensionadas) em wp-content/uploads .

O que levanta a questão – eu realmente preciso passar por todo o processo com a Filesystem API (incluindo perguntando wp_mkdir_p() credenciais de FTP quando necessário), ou wp_mkdir_p() é bom o suficiente para isso?

Solutions Collecting From Web of "Criando o diretório nos uploads – wp_mkdir_p () ou WP_Filesystem?"

wp-content/uploads/ deve ser gravável para o servidor (caso contrário, seria impossível carregar um arquivo, não?). Se você for criar algo sob este diretório, é seguro usar wp_mkdir_p() .

Eu só usaria WP_Filesystem se houver uma chance de o servidor não ter permissions para escrever na localização, como em wp-content/plugins/ , que não precisa ser gravável para o servidor (pelo menos eu acho que não tem que ser?).

Sidenote: a página Permissões de arquivo do Codex também fala sobre um diretório de wp-content/cache/ . Este seria um local “mais padrão” para arquivos de cache?

Eu tentaria algo simples, antes de mexer com um mar infinito de possibilidades / configurações de hospedagem:

 $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(); ... ;-) } 

Apenas um heads up em ter o seu plugin criar arquivos / pastas: o meu plugin fez isso também, e eu encontrei uma série de problemas com permissions de arquivos para diferentes usuários. Alguns são janelas, alguns são unix, alguns são hospedados e alguns cultivados em casa. Foi meu e-mail de suporte # 1 uma vez que eu compartilhei o plugin.

Reftivei o meu código para minimizar a necessidade de tocar nos filesystems e o diretório de upload é o ÚNICO que uso agora para evitar tais problemas.