आप एक प्लगइन लिखते हैं जिसके लिए PHP 5.1 की आवश्यकता होती है। कोई इसे PHP 4 के साथ सर्वर पर स्थापित करने की कोशिश करता है। आप एक सुरक्षित और उपयोगकर्ता के अनुकूल तरीके से इससे कैसे निपटते हैं?
आप एक प्लगइन लिखते हैं जिसके लिए PHP 5.1 की आवश्यकता होती है। कोई इसे PHP 4 के साथ सर्वर पर स्थापित करने की कोशिश करता है। आप एक सुरक्षित और उपयोगकर्ता के अनुकूल तरीके से इससे कैसे निपटते हैं?
जवाबों:
यह फ़ंक्शन और सक्रियण हुक प्लगइन को सक्रिय होने से रोकता है और आपको न्यूनतम पीएचपी और वर्डप्रेस संस्करण दोनों की जांच करने की अनुमति देता है।
register_activation_hook( __FILE__, array( 'Your_Plugin_Class_Name', 'activate' ) );
/**
* Plugin Activation hook function to check for Minimum PHP and WordPress versions
* @param string $wp Minimum version of WordPress required for this plugin
* @param string $php Minimum version of PHP required for this plugin
*/
function activate( $wp = '3.1', $php = '5.2.4' ) {
global $wp_version;
if ( version_compare( PHP_VERSION, $php, '<' ) )
$flag = 'PHP';
elseif
( version_compare( $wp_version, $wp, '<' ) )
$flag = 'WordPress';
else
return;
$version = 'PHP' == $flag ? $php : $wp;
deactivate_plugins( basename( __FILE__ ) );
wp_die('<p>The <strong>Insert PLugin Name Here</strong> plugin requires'.$flag.' version '.$version.' or greater.</p>','Plugin Activation Error', array( 'response'=>200, 'back_link'=>TRUE ) );
}
/**
* Plugin Name: Foo
*/
// Check for required PHP version
if ( version_compare( PHP_VERSION, '5.1', '<' ) )
{
exit( sprintf( 'Foo requires PHP 5.1 or higher. You’re still on %s.', PHP_VERSION ) );
}
// The rest of your plugin code follows
मुझे यकीन नहीं है कि जिसके बाद से WP संस्करण ऐसा हुआ है, लेकिन 3.5 में प्लगइन वास्तव में सक्रिय करने में विफल रहता है और त्रुटि संदेश उपयोगकर्ता को व्यवस्थापक में दिखाया जाता है, जो कि साफ-सुथरा है।
त्रुटि संदेश का अनुवाद नहीं किया गया है, हालांकि। ऐसा करने के लिए आपको exit
कॉल से ठीक पहले अपनी अनुवाद फ़ाइलों को लोड करना होगा ।
आप इसे सक्रिय कर सकते हैं और एक त्रुटि संदेश दिखा सकते हैं:
// if PHP version is lower than 5.1
if(version_compare(PHP_VERSION, '5.1') < 0){
// show a message inside the dashboard
if(is_admin()){
function my_plugin_notice(){
?>
<div class="error below-h2">
<p>
<?php
printf(__('The abc plugin requires at least PHP 5.1. You have %s'), PHP_VERSION);
?>
</p>
</div>
<?php
}
add_action('admin_notices', 'my_plugin_notice');
}
// stop here and do nothing further
return;
}
// if PHP version is equal or higher than 5.1
require dirname(__FILE__) . '/php51code.php';
वापसी के बयान से पहले इसे प्रोग्रामेटिक रूप से डीएक्टिवेट करना भी संभव है ...
deactivate_plugins
version_compare
की तुलना के लिए एक रोमांचकारी परम है; कृपया उपयोग करेंif ( version_compare( phpversion(), '5.1a', '<' ) )
मुझे पता है कि यह एक पुराना सवाल है, लेकिन एक अच्छे समाधान की खोज करने वालों के लिए, गैरी पेंडरगैस्ट के पास जाने के लिए एक अच्छा मार्ग था जो अन्य उत्तरों में उल्लिखित कुछ ठिकानों को कवर करता है (उनकी पोस्ट यहाँ देखें , मैंने नीचे कोड अपडेट किया है PHP संस्करण की जाँच करने के लिए, लेकिन आप इसे लगभग किसी भी जाँच के लिए उपयोग कर सकते हैं):
// In this example, only allow activation on WordPress 3.7 or higherclass
MyPlugin {
function __construct() {
add_action( 'admin_init', array( $this, 'check_version' ) );
// Don't run anything else in the plugin, if we're on an incompatible WordPress version
if ( ! self::compatible_version() ) {
return;
}
}
// The primary sanity check, automatically disable the plugin on activation if it doesn't// meet minimum requirements.static
function activation_check() {
if ( ! self::compatible_version() ) {
deactivate_plugins( plugin_basename( __FILE__ ) );
wp_die( __( 'My Plugin requires PHP 5.1 or higher!', 'my-plugin' ) );
}
}
// The backup sanity check, in case the plugin is activated in a weird way,
// or the versions change after activation.
function check_version() {
if ( ! self::compatible_version() ) {
if ( is_plugin_active( plugin_basename( __FILE__ ) ) ) {
deactivate_plugins( plugin_basename( __FILE__ ) );
add_action( 'admin_notices', array( $this, 'disabled_notice' ) );
if ( isset( $_GET['activate'] ) ) {
unset( $_GET['activate'] );
}
}
}
}
function disabled_notice() {
echo '<strong>' . esc_html__( 'My Plugin requires PHP 5.1 or higher!', 'my-plugin' ) . '</strong>';
}
static function compatible_version() {
if ( version_compare(PHP_VERSION, '5.1', '<') ) {
return false;
}
// Add sanity checks for other version requirements here
return true;
}
}
global $myplugin;
$myplugin = new MyPlugin();
register_activation_hook( __FILE__, array( 'MyPlugin', 'activation_check' ) );
मैंने ऊपर दिए गए कोड को एक जिस्ट में भी सहेजा है ।