Membuat direktori dalam unggahan - wp_mkdir_p () atau WP_Filesystem?

9

Saya tidak berpikir saya pernah memiliki kebutuhan praktis untuk membuat folder / file di WP sebelumnya, tetapi untuk plugin saya perlu cache (untuk ukuran gambar) folder di wp-content/uploads.

Yang menimbulkan pertanyaan - apakah saya benar-benar harus melalui semua proses dengan Filesystem API(termasuk meminta kredensial FTP saat diperlukan), atau wp_mkdir_p()cukup baik untuk ini?

Jarang
sumber

Jawaban:

7

wp-content/uploads/harus dapat ditulis untuk server (jika tidak, tidak mungkin untuk mengunggah file, bukan?). Jika Anda akan membuat sesuatu di bawah direktori ini, aman digunakan wp_mkdir_p().

Saya hanya akan menggunakan WP_Filesystemjika ada kemungkinan server tidak memiliki izin untuk menulis ke lokasi, seperti di wp-content/plugins/, yang tidak harus dapat ditulisi untuk server (setidaknya saya pikir tidak harus seperti itu?).

Sidenote: Halaman File Izin Codex juga berbicara tentang wp-content/cache/direktori. Apakah ini akan menjadi lokasi "lebih standar" untuk file cache?

Jan Fabry
sumber
Saya tidak yakin tapi saya pikir cacheini lebih tentang hal-hal seperti plugin caching halaman, sementara kasus saya lebih banyak tentang versi alternatif gambar ... Perbedaan antara folder-folder ini tampaknya semantik daripada teknis, bukan?
Jarang
6

Saya akan mencoba sesuatu yang sederhana, sebelum bermain-main dengan lautan kemungkinan / pengaturan 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(); ... ;-)
}
kaisar
sumber
Btw: Ini belum diuji dan saya tidak tahu apakah untuk menyimpan wp_mkdir_p();dapat diperiksa setelah eksekusi atau apakah eksekusi fn harus di dalam pernyataan if ... (tidak pernah menggunakannya sebelumnya dan bahkan tidak tahu tentang fungsi itu sendiri sampai sekarang).
kaiser
Fungsionalitas terkait adalah jenis back-end-ish ... Saya ingin meminimalkan interaktivitas. Meskipun pesan dalam pengaturan plugin patut dipertimbangkan.
Jarang
Saya tidak akan terlalu memikirkannya. Jika sys pengguna tidak dapat melakukannya dengan nilai-nilai default, cobalah untuk memberi tahu mereka apa yang harus dilakukan. Seperti yang saya katakan: Kemungkinan tidak ada habisnya dan saya rasa Anda lebih baik hanya mengatakan apa hasilnya harus dilanjutkan untuk mencoba memecahkan masalah ini melalui kode atau dukungan.
kaiser
4

Hanya kepala di atas memiliki plugin Anda membuat file / folder: plugin saya juga melakukannya, dan saya mengalami banyak masalah dengan izin file untuk pengguna yang berbeda. Ada yang windows, ada yang unix, ada yang di-host, dan ada yang ditanam. Itu adalah email dukungan # 1 saya setelah saya membagikan plugin.

Saya telah refactored kode saya untuk meminimalkan kebutuhan untuk menyentuh sistem file dan direktori unggah adalah HANYA yang saya gunakan sekarang untuk menghindari masalah seperti itu.

user6479
sumber
Ya, saya mengerti itu, itu sebabnya saya repot-repot bertanya. Gambaran umum saya saat ini adalah bahwa jika uploadsdikunci cukup untuk WP gagal maka tidak ada gunanya plugin untuk mencoba dan melakukan lebih banyak. Dan jika itu cukup baik untuk WP maka itu cukup baik untuk plugin. Untungnya saya hanya perlu direktori cache di mana saja dan bukan sesuatu yang lebih kompleks dan rentan terhadap kesalahan.
Paling lambat