Tạo thư mục trong tải lên - wp_mkdir_p () hoặc WP_Filesystem?


9

Tôi không nghĩ rằng tôi đã từng có nhu cầu thực tế để tạo các thư mục / tệp trong WP trước đây, nhưng đối với một plugin tôi cần thư mục bộ đệm (đối với hình ảnh đã thay đổi kích thước) wp-content/uploads.

Điều này đặt ra câu hỏi - tôi có thực sự cần phải trải qua tất cả quá trình với Filesystem API(bao gồm cả việc hỏi nhầm thông tin đăng nhập FTP khi cần) hay wp_mkdir_p()đủ tốt cho việc này?

Câu trả lời:


7

wp-content/uploads/nên ghi được cho máy chủ (nếu không thì không thể tải lên một tệp, phải không?). Nếu bạn định tạo một cái gì đó trong thư mục này, nó an toàn để sử dụng wp_mkdir_p().

Tôi sẽ chỉ sử dụng WP_Filesystemnếu có cơ hội máy chủ không có quyền ghi vào vị trí, như trong wp-content/plugins/, không phải ghi vào máy chủ (ít nhất tôi nghĩ rằng nó không phải như vậy?).

Sidenote: Trang Quyền tệp của Codex cũng nói về một wp-content/cache/thư mục. Đây có phải là một vị trí "chuẩn hơn" cho các tệp bộ đệm không?


Tôi không chắc nhưng tôi nghĩ cachenhiều hơn về các công cụ như plugin bộ nhớ đệm trang, trong khi trường hợp của tôi là về các phiên bản hình ảnh thay thế ... Sự khác biệt giữa các thư mục này có vẻ ngữ nghĩa hơn là kỹ thuật, phải không?
Rarst

6

Tôi sẽ thử một cái gì đó đơn giản, trước khi loay hoay với một biển vô tận sở hữu / thiết lập lưu trữ:

$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: Nó chưa được kiểm tra và tôi không biết wp_mkdir_p();có nên kiểm tra xem có thể kiểm tra sau khi thực hiện hay không nếu việc thực thi fn nên bên trong câu lệnh if ... (chưa bao giờ sử dụng nó trước đó và thậm chí không biết về chính hàm đó cho đến khi hiện nay).
kaiser

Chức năng liên quan là loại back-end-ish ... Tôi muốn giảm thiểu khả năng tương tác. Mặc dù thông báo trong cài đặt của plugin đáng để xem xét.
Rarst

Tôi sẽ không nghĩ quá nhiều về nó. Nếu người dùng không thể làm điều đó với các giá trị mặc định, hãy thử cho họ biết phải làm gì. Như tôi đã nói: Khả năng là vô tận và imho bạn tốt hơn chỉ cần nói kết quả sẽ tiếp tục như thế nào để cố gắng giải quyết vấn đề này thông qua mã hoặc hỗ trợ.
kaiser

4

Chỉ cần đề cập đến việc plugin của bạn tạo tập tin / thư mục: plugin của tôi cũng đã làm điều đó và tôi gặp phải hàng loạt vấn đề với quyền truy cập tệp cho những người dùng khác nhau. Một số là cửa sổ, một số là unix, một số được lưu trữ và một số nhà được trồng. Đó là email hỗ trợ số 1 của tôi khi tôi chia sẻ plugin.

Tôi đã cấu trúc lại mã của mình để giảm thiểu sự cần thiết phải chạm vào các hệ thống tệp và thư mục tải lên là DUY NHẤT tôi sử dụng bây giờ để tránh các vấn đề như vậy.


Vâng, tôi hiểu điều đó, đó là lý do tại sao tôi bận tâm đặt câu hỏi. Tổng quan hiện tại của tôi về vấn đề này là nếu uploadsbị khóa đủ để WP thất bại thì không có ý nghĩa gì để plugin thử và làm nhiều hơn nữa. Và nếu nó đủ tốt cho WP thì nó đủ tốt cho plugin. May mắn thay, tôi chỉ cần thư mục bộ đệm ở bất cứ đâu và không phải là một cái gì đó phức tạp hơn và dễ bị lỗi.
Rarst
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.