Ich denke, es kann getan werden.
Ich benutze diesen Prozess, um bei der Plugin-Aktivierung nach der Mindestversion zu suchen. Sie können eine Variation davon verwenden, um dies während eines Upgrades zu überprüfen (obwohl ich denke, dass ein Upgrade auf eine neue Version, die diesen Code enthält, dazu führen würde, dass das Plugin deaktiviert wird).
Der Code zum Überprüfen der Mindestversionen:
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 ;
}
.... und dann dies, um das Plugin zu deaktivieren, wenn die Versionen nicht den Anforderungen entsprechen (Funktion wird falsch zurückgegeben)
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']) ;
}
}
Dann zeige ich eine Admin-Nachricht an, um sie wissen zu lassen, dass das Plugin deaktiviert wurde:
add_action('admin_notices', 'show_notice') ;
Wo die show_notice
Funktion eine abweisbare Administratorbenachrichtigung anzeigt.
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 ;
}
Funktioniert gut.
Bearbeitet, um hinzuzufügen
Was ist, wenn Sie Code in Ihr Plugin einfügen, um das Plugin-Upgrade zu blockieren (etwa: /programming/17897044/wordpress-how-to-disable-plugin-update ).
Die neue Version des Plugins verfügt über einen Pre-Load-Stub. Es wird eine Überprüfung der PHP-Version durchgeführt. Wenn OK, laden Sie den Rest des Plugins. Wenn nicht, laden Sie den Rest des Plugins nicht. Code im Pre-Load-Stub funktioniert in allen PHP-Versionen.
Der Pre-Stub enthält keinen PHP 7x-Code, sodass die Vorverarbeitung des Stubs keinen Fehler verursacht. Der Pre-Stub deaktiviert das Plugin auch mit etwas ähnlichem wie meiner ursprünglichen Antwort.
Wenn die PHP-Version 7x ist, lädt der Pre-Load-Stub den Rest des Plugins. Und Bob ist dein Onkel.