Creazione directory in upload - wp_mkdir_p () o WP_Filesystem?


9

Non credo di aver mai avuto la necessità pratica di creare cartelle / file in WP prima, ma per un plugin ho bisogno della cartella cache (per immagini ridimensionate) in wp-content/uploads.

Il che solleva la domanda: ho davvero bisogno di passare attraverso tutto il processo Filesystem API(inclusa la richiesta caotica di credenziali FTP quando necessario), o wp_mkdir_p()è abbastanza buono per questo?

Risposte:


7

wp-content/uploads/dovrebbe essere scrivibile per il server (altrimenti sarebbe impossibile caricare un file, no?). Se hai intenzione di creare qualcosa in questa directory, è sicuro da usare wp_mkdir_p().

Vorrei utilizzare solo WP_Filesystemse esiste la possibilità che il server non disponga delle autorizzazioni per scrivere nella posizione, come in wp-content/plugins/, che non deve essere scrivibile per il server (almeno penso che non debba essere?).

Sidenote: la pagina Autorizzazioni file del Codice parla anche di una wp-content/cache/directory. Questa sarebbe una posizione "più standard" per i file di cache?


Non ne sono sicuro, ma penso che cacheriguardi più cose come i plug-in di memorizzazione nella pagina, mentre il mio caso riguarda più versioni alternative delle immagini ... La distinzione tra queste cartelle sembra semantica piuttosto che tecnica, no?
Rarst

6

Proverei qualcosa di semplice, prima di fare casino con un mare infinito di possibilità / configurazioni di hosting:

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

Btw: Non è testato e non ho idea di come salvare il wp_mkdir_p();può essere verificato dopo l'esecuzione o se l'esecuzione dell'fn dovrebbe essere all'interno dell'istruzione if ... (non l'ho mai usata prima e non sapevo nemmeno della funzione stessa fino a quando adesso).
Kaiser

La funzionalità correlata è una specie di back-end-ish ... Vorrei minimizzare l'interattività. Anche se vale la pena considerare il messaggio nelle impostazioni del plugin.
Rarst

Non ci penserei troppo. Se il sys degli utenti non riesce a farlo con i valori predefiniti, prova a dire loro cosa fare. Come ho detto: le possibilità sono infinite e immagino che tu stia meglio dicendo semplicemente quale dovrebbe essere il risultato per continuare a cercare di risolvere questo problema tramite codice o supporto.
Kaiser

4

Solo un avvertimento sul fatto che il tuo plug-in crei file / cartelle: anche il mio plug-in lo ha fatto e mi sono imbattuto in una serie di problemi con le autorizzazioni dei file per diversi utenti. Alcuni sono windows, alcuni sono unix, altri sono ospitati e altri coltivati ​​in casa. Era la mia e-mail di supporto n. 1 dopo aver condiviso il plug-in.

Ho riformattato il mio codice per ridurre al minimo la necessità di toccare i file system e la directory di upload è SOLO quella che uso ora per evitare tali problemi.


Sì, lo capisco, ecco perché mi preoccupo di fare domande. La mia attuale panoramica del problema è che se uploadsè bloccato abbastanza per far fallire WP, allora non ha senso che il plugin provi a fare di più. E se è abbastanza buono per WP, allora è abbastanza buono per il plugin. Fortunatamente ho semplicemente bisogno di directory cache ovunque e non qualcosa di più complesso e soggetto a errori.
Rarst
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.