Criando o diretório em uploads - wp_mkdir_p () ou WP_Filesystem?

9

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

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

    
por Rarst 19.05.2011 / 11:21

3 respostas

7

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

Eu só usaria WP_Filesystem se houver uma chance de o servidor não ter permissões para gravar no local, 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 do Arquivo do Codex também fala sobre um diretório wp-content/cache/ . Isso seria um local "mais padrão" para arquivos de cache?

    
por Jan Fabry 19.05.2011 / 17:34
6

Eu tentaria algo simples, antes de brincar com um infinito mar 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(); ... ;-)
}
    
por kaiser 19.05.2011 / 17:02
4

Apenas um aviso para que o seu plug-in crie arquivos / pastas: o meu plug-in também fez isso, e me deparei com uma série de problemas com permissões de arquivos para diferentes usuários. Algumas são janelas, algumas são unix, outras são hospedadas e outras são criadas em casa. Foi o meu e-mail de suporte número 1 depois que compartilhei o plug-in.

Refatorizei meu código para minimizar a necessidade de tocar nos sistemas de arquivos, e o diretório de upload é o ÚNICO que uso agora para evitar esses problemas.

    
por user6479 24.06.2011 / 17:33