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

9

Acho que nunca tive necessidade prática de criar pastas / arquivos no WP antes, mas para um plug-in preciso de uma pasta de cache (para imagens redimensionadas) wp-content/uploads.

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

Rarst
fonte

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ê deseja criar algo nesse diretório, é seguro usá-lo wp_mkdir_p().

Eu usaria apenas WP_Filesystemse 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 precisa ser?).

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

Jan Fabry
fonte
Não tenho certeza, mas acho que cacheé mais sobre coisas como plug-ins de cache de páginas, enquanto meu caso é mais sobre versões alternativas de imagens ... A distinção entre essas pastas parece semântica e não técnica, não?
Rarst
6

Eu tentaria algo simples, antes de brincar com um mar sem fim 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(); ... ;-)
}
kaiser
fonte
Btw: Não foi testado e eu não tenho idéia se salvar o wp_mkdir_p();pode ser verificado após a execução ou se a execução do fn deve estar dentro da instrução if ... (nunca o usei antes e nem sabia sobre a função em si até agora).
Kaiser
A funcionalidade relacionada é um tipo de back-end ... Gostaria de minimizar a interatividade. Embora a mensagem na configuração do plugin valha a pena considerar.
Rarst
Eu não pensaria muito sobre isso. Se o sistema dos usuários não puder fazer isso com valores padrão, tente dizer a eles o que fazer. Como eu disse: as possibilidades são infinitas e, portanto, é melhor você apenas dizer qual deve ser o resultado para continuar, para tentar solucionar esse problema via código ou suporte.
Kaiser
4

Apenas um aviso sobre como seu plug-in cria arquivos / pastas: meu plug-in também fez isso, e eu tive vários problemas com permissões de arquivo para diferentes usuários. Algumas são janelas, outras são unix, outras são hospedadas e outras cultivadas em casa. Foi o meu e-mail de suporte nº 1 depois que compartilhei o plug-in.

Refatorei 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.

user6479
fonte
Sim, eu entendo isso, é por isso que me preocupo em fazer perguntas. Minha visão geral atual do problema é que, se uploadsestiver bloqueado o suficiente para que o WP falhe, não faz sentido o plugin tentar fazer mais. E se for bom o suficiente para o WP, será bom o suficiente para o plugin. Felizmente, eu apenas preciso do diretório de cache em qualquer lugar e não de algo mais complexo e propenso a erros.
Rarst