Lợi ích của uninstall.php
và lý do mà nó được giới thiệu là nó cho phép bạn cách ly mã gỡ cài đặt với phần còn lại của mã plugin. Điều này có nghĩa là toàn bộ plugin của bạn không phải tải khi gỡ cài đặt. Điều đó giảm thiểu khả năng plugin của bạn sẽ vô tình chạy mã trong quá trình gỡ cài đặt chỉ nhằm mục đích chạy khi plugin đang hoạt động. Tuy nhiên, nói chung, bạn không nên chạy mã tùy ý trong các tệp plugin của mình, hầu hết mọi thứ chỉ nên chạy nếu được kích hoạt bởi một hook.
Từ các tài liệu có trong cam kết ban đầu :
Plugin không nên chạy mã tùy ý bên ngoài các chức năng, khi đăng ký hook gỡ cài đặt. Để chạy bằng hook, plugin sẽ phải được đưa vào, điều đó có nghĩa là bất kỳ mã nào nằm ngoài hàm sẽ được chạy trong quá trình gỡ cài đặt. Các plugin không nên cản trở quá trình gỡ cài đặt.
Nếu plugin không thể được viết mà không chạy mã trong plugin, thì plugin sẽ tạo một tệp có tên 'Uninstall.php' trong thư mục plugin cơ sở ...
TL; DR: plugin của bạn thực sự cần được cấu trúc theo cách như vậy mà nó không phải để sử dụng unisntall.php
, nhưng sử dụng nó anyway bổ sung thêm bảo vệ chống lại những thứ vô tình chạy trong khi gỡ bỏ cài đặt.
Tất nhiên, trong một số trường hợp, bạn có thể cần phải tải các phần của plugin để gỡ cài đặt đúng cách. Nhưng nếu bạn đang sử dụng uninstall.php
, bao gồm các tệp đó sẽ là một quyết định có ý thức mà bạn đưa ra, do đó khó tải nhầm một số tệp của plugin chạy mã tùy ý.
Lần duy nhất tôi sử dụng register_uninstall_hook()
phương thức này là trong một plugin đơn tệp rất đơn giản, trong đó tất cả các mã được gói gọn trong một lớp duy nhất.
Lưu ý rằng uninstall_plugin()
sẽ chạy hook hành động pre_uninstall_plugin
và uninstall_{$plugin_file}
[edit: uninstall_{$plugin_file}
sẽ chỉ chạy nếu register_uninstall_hook()
được sử dụng] bất kể bạn sử dụng phương thức nào. (Xem vé # 34569. )