Tôi nghĩ rằng nó có thể được thực hiện.
Tôi sử dụng quy trình này để kiểm tra phiên bản tối thiểu khi kích hoạt plugin. Bạn có thể sử dụng một biến thể trên này để kiểm tra trong quá trình nâng cấp (mặc dù tôi nghĩ rằng việc nâng cấp lên phiên bản mới có chứa mã này sẽ khiến plugin ngừng kích hoạt).
Mã để kiểm tra các phiên bản tối thiểu:
function is_requirements_met()
{
$min_wp = '4.6' ; // minimum WP version
$min_php = '5.3' ; // minimum PHP version
// Check for WordPress version
if ( version_compare( get_bloginfo('version'), $min_wp, '<' ))
{
return false ;
}
// Check the PHP version
if ( version_compare(PHP_VERSION, $min_php, '<'))
{
return false ;
}
return true ;
}
.... và sau đó điều này để vô hiệu hóa plugin nếu các phiên bản không phù hợp với yêu cầu (hàm trả về sai)
if ( is_plugin_active( plugin_basename(__FILE__)))
{
deactivate_plugins( plugin_basename(__FILE__)) ;
// Hide the default "Plugin activated" notice
if ( isset ($_GET['activate']))
{
unset ($_GET['activate']) ;
}
}
Sau đó, tôi hiển thị một thông báo quản trị để cho họ biết plugin đã bị vô hiệu hóa:
add_action('admin_notices', 'show_notice') ;
Trường hợp show_notice
chức năng hiển thị một thông báo quản trị viên có thể bỏ qua.
function show_notice()
{
echo '<div class="notice notice-error is-dismissible"><h3><strong>Plugin </strong></h3><p> cannot be activated - requires at least WordPress 4.6 and PHP 5.3. Plugin automatically deactivated.</p></div>' ;
return ;
}
Hoạt động tốt.
Chỉnh sửa để thêm
Điều gì sẽ xảy ra nếu bạn đặt mã trong plugin của mình để chặn nâng cấp plugin (đại loại như thế này: /programming/17897044/wordpress-how-to-disable-plugin-update ).
Phiên bản mới của plugin có sơ khai tải trước. Nó sẽ kiểm tra phiên bản PHP. Nếu OK, tải phần còn lại của plugin. Nếu không, đừng tải phần còn lại của plugin. Mã trong sơ khai tải trước sẽ hoạt động trong tất cả các phiên bản PHP.
Sơ khai không chứa bất kỳ mã PHP 7x nào, vì vậy tiền xử lý sơ khai sẽ không gây ra lỗi. Sơ khai cũng sẽ vô hiệu hóa plugin bằng cách sử dụng một cái gì đó tương tự như câu trả lời ban đầu của tôi.
Nếu phiên bản PHP là 7x, thì sơ khai tải trước sẽ tải phần còn lại của plugin. Và Bob là chú của bạn.