Nơi lưu trữ các tệp PHP được tạo bởi plugin / chủ đề


12

Có những trường hợp trong đó một plugin hoặc chủ đề cần tạo một tệp php ở đâu đó mà sau này có thể bao gồm nó. Ví dụ: plugin captcha hoặc một loại hệ thống tạo khuôn mẫu như twig / smarty (Trong tình huống của tôi, đó là công cụ mẫu đơn giản cho một bộ sưu tập các widget).

Tập tin này nên được tạo ở đâu?

Nơi duy nhất tôi có thể nghĩ là wp-content/uploads/, nhưng điều đó không có vẻ đúng :)

Vì vậy, có nơi nào an toàn để bạn có thể tạo tệp và không lo chúng bị xóa trên bản cập nhật WordPress / plugin / theme không?

Một giải pháp có thể là tạo một thư mục chủ đề / thư mục con trong thư mục chủ đề / plugin ...

Câu trả lời:



5

Bạn không thể dựa vào quyền truy cập ghi trong thư mục plugin hoặc chủ đề, vì vậy wp_upload_dir () là thư mục duy nhất có thể.
Nhưng tôi thực sự nghi ngờ rằng cần phải lưu trữ thông tin trong một tệp mới. Nếu mẫu được tạo bởi người dùng, hãy lưu nó trong một tùy chọn phân tích nội dung bằng các chức năng plugin thông thường của bạn (ví dụ: bằng cách thay thế trình giữ chỗ bằng strtr()).


vâng, điều đó tốt cho việc thay thế các biến (bây giờ tôi có một cái gì đó như thế). Nhưng nếu bạn cũng muốn cho phép người dùng sử dụng các thẻ có điều kiện như IF hoặc lặp một đối tượng, bạn cần viết mã php ...
onetrickpony

5

Trong khi làm việc với một plugin Wordpress, tôi tình cờ thấy câu hỏi của bạn. Trước tiên tôi cũng nghĩ về việc tạo các tệp tạm thời để lưu trữ một số dữ liệu mà plugin của tôi đang tạo. Tuy nhiên, suy nghĩ kỹ hơn một chút, cách tiếp cận này có vẻ kỳ lạ đối với tôi vì bạn không muốn có dữ liệu tạm thời nằm trên một máy chủ nếu bạn đang cố gắng mở rộng quy mô bằng cách sử dụng một cụm máy chủ.

Vì vậy, tôi đã tìm kiếm lại và dường như giải pháp hợp lệ cho các vấn đề như vậy là API Transpress Wordpress cho phép bạn lưu trữ dữ liệu trong cơ sở dữ liệu với ngày hết hạn. Tất nhiên, vấn đề của bạn vẫn có thể yêu cầu các tệp được lưu trong bộ nhớ cache cục bộ, ví dụ: nếu chúng quá lớn đối với cơ sở dữ liệu, nhưng ít nhất tôi cũng khuyên bạn nên xem tùy chọn này :-)


3

Tôi chỉ có thể nghĩ ra một vài lý do chính đáng để plugin cần tạo tệp. Một là sao lưu các tùy chọn phức tạp mà người dùng có thể xuất và tải xuống để chuyển sang một trang mới. Cái khác là một plugin sơ đồ trang web.

Nếu plugin của bạn có các tệp mẫu mà người dùng có thể tùy chỉnh, bạn nên cung cấp cho người dùng tùy chọn để di chuyển tệp tùy chỉnh vào thư mục chủ đề hiện tại để khi cập nhật plugin của bạn, họ sẽ không bị ghi đè. Bạn có thể thử tải các tệp từ thư mục chủ đề trước rồi quay lại thư mục plugin của bạn.

Gravity Forms lưu trữ các tệp được tải lên trong thư mục riêng của mình bên trong các tệp tải lên. W3 Total Cache sử dụng nội dung wp, chuyển hướng đăng nhập sử dụng phương pháp tôi đã mô tả ở trên.


1

Nếu bạn phải tạo tệp (chẳng hạn như tệp tạm thời cho Plugin CAPTCHA), bạn chắc chắn nên sử dụng \wp-content\uploads\(hoặc thư mục tùy chỉnh, chẳng hạn như \wp-content\plugin-slug-files\).

Hầu hết các mã tùy chỉnh khác thực sự nên được lưu trữ trong Cơ sở dữ liệu.


1
eval()nó? không thể nào ...
onetrickpony

Bạn cần eval()gì?
Chip Bennett

nghĩ về sự thông minh chẳng hạn. Giả sử bạn tạo một tiện ích và bạn muốn người dùng có khả năng tùy chỉnh đầu ra theo bất cứ cách nào họ muốn. Vì vậy, bạn thêm một textarea trong các tùy chọn tiện ích nơi người dùng có thể viết mẫu giống như thông minh của riêng mình cho tiện ích đó. Mẫu đó cần được biên dịch và cách tốt nhất để làm điều đó là tạo một tệp PHP và đưa nó vào trong widget.
onetrickpony

Nghe có vẻ như là một sự kéo dài đáng kể của mục đích sử dụng các tùy chọn Widgets / Widget ...
Chip Bennett

1
Chắc chắn không. Nhưng IMHO nếu người dùng cần sự linh hoạt đó trong việc tạo Widgets tùy chỉnh, thì người dùng nên viết Plugin tùy chỉnh hoặc thêm mã Widget tùy chỉnh vào tệp tin.php của Theme. Tại sao có Plugin, tạo Widgets, cho phép người dùng tạo các Widget khác?
Chip Bennett

1

Tôi luôn đề xuất một trình tải tự động tương thích PSR-0 và một thư mục thư viện chỉ hoạt động.

Một số người dùng WP có thể bắn bạn sau đó nhưng có lẽ bạn không tập trung vào những người dùng này, vì vậy đây có thể là một tùy chọn. Đặc biệt là nếu bạn nhận được ngày càng nhiều libs cụ thể của nhà cung cấp.

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.