যখন কোনও নির্দিষ্ট ডাব্লুপি সংস্করণটি পূরণ না হয় তখন অ্যাক্টিভেশন প্রক্রিয়ায় একটি প্লাগইন বন্ধ করুন প্রশাসক_নোটিকেশন অ্যাকশন হুক-এ ত্রুটি বার্তা দেখান


9

আমার একটি প্লাগইন রয়েছে যা আমি যদি সুনির্দিষ্ট হতে চাই না তবে যদি এটি কোনও নির্দিষ্ট ডাব্লুপি সংস্করণ নম্বরটি না পূরণ করে তবে অ্যাডমিন_নোটসেস অ্যাকশন হুকটিতে ত্রুটি বার্তা দেখান। আমি যতদূর গবেষণা করেছি, নীচের কোডটি সর্বোত্তম যে আমি এই লক্ষ্যটি অর্জন করতে পারি:

$wp_version = get_bloginfo('version');
if ( $wp_version < 4.5 ) {
    add_action( 'admin_init', 'deactivate_plugin_now' );
    add_action( 'admin_notices', 'errormsg' ) );
}

public function deactivate_plugin_now() {
    if ( is_plugin_active('myplugin/myplugin.php') ) {
        deactivate_plugins('myplugin/myplugin.php');
    }
}

public function errormsg () {
    $class = 'notice notice-error';
    $message = __( 'Error you did not meet the WP minimum version', 'text-domain' );
    printf( '<div class="%1$s"><p>%2$s</p></div>', $class, $message );
}

তবে আমি মনে করি আমি এখনও এটি ভুল করছি কারণ আমি নির্ধারিত ত্রুটি বিজ্ঞপ্তির সাথে একই সাথে প্লাগইন সক্রিয় বার্তা পাচ্ছি।

নির্দিষ্ট ডাব্লুপি সংস্করণ পূরণ না হয়ে গেলে অ্যাক্টিভেশন প্রক্রিয়ায় একটি প্লাগইন বন্ধ করুন

প্লাগইন অ্যাক্টিভেশন প্রক্রিয়াটি সঠিকভাবে বন্ধ করার জন্য যথাযথ অ্যাকশন হুক / ফিল্টার কী হবে যাতে আমি কেবল ত্রুটি বার্তাটি পাই?


দয়া করে @ কার্ল আলবার্তো আমার উত্তরটি বিবেচনা করুন।
prosti থেকে

উত্তর:


6

আমি এই পার্টিতে দেরি করতে পারি, তবে প্লাগইন অ্যাক্টিভেশন বন্ধ করতে এবং অ্যাডমিন নোটিশগুলি যেখানে ওয়ার্ডপ্রেস একটি ত্রুটি বার্তা প্রদর্শন করার জন্য, আমি কেবল একটি ত্রুটি বার্তা আউটপুট এবং সম্পাদন বন্ধ করে দেয়। এটি ডাব্লুপি-ক্লাইকের সাথে দুর্দান্ত খেলার অতিরিক্ত সুবিধা রয়েছে :

প্লাগিন অ্যাক্টিভেশন ব্যর্থ হয়েছে

উদাহরণ:

class testPlugin() {

  ...

   static function activate() {

   //[do some stuff here]

   if ($error) {
      die('Plugin NOT activated: ' . $error);
   }

}

register_activation_hook( __FILE__, array( 'testPlugin', 'activate' ));

2

প্রয়োজনীয়, আপনি যেভাবে চান এটি এটি করতে পারবেন না। সমস্ত ওয়ার্ডপ্রেস ফর্ম তাদের প্রক্রিয়া শেষ করার পরে পুনঃনির্দেশিত হয় এবং তারা নিজে আউটপুট উত্পন্ন করে না এবং এর জন্য ত্রুটি বার্তাটি অন্য পৃষ্ঠার অনুরোধে উত্পন্ন হয়। যদি আপনার প্লাগইন সেই সময়ে সক্রিয় না হয় তবে কোনও বার্তা প্রদর্শিত হবে না। আরও জটিলতা হ'ল প্লাগইনগুলি অ্যাজাক্স দ্বারা সক্রিয় হতে পারে।

কুৎসিত কিন্তু কাজের উপায় হ'ল পিএইচপি ত্রুটি তৈরি করে অ্যাক্টিভেশন ব্যর্থ করা বা আইআইআরসি যে কোনও আউটপুট তা করবে, সুতরাং আপনি কেবল প্লাগইন অ্যাক্টিভেশন হুকের "সংস্করণ মেলখানি" এর মতো কিছু আউটপুট করতে পারেন যা ত্রুটি আউটপুট বাক্সে প্রদর্শিত হবে যে অ্যাক্টিভেশন ব্যর্থ হলে প্রদর্শিত হচ্ছে।

কিছু ভাবার বিষয়: লোকেরা আপনার প্লাগইন ফাইলগুলিকে অন্তর্ভুক্ত করতে পারে বা কোনওরকমভাবে ইউআইকে বাইপাস করে বা ডাব্লুপি-ক্লিমে ব্যবহার করে জোর করে সক্রিয় করতে পারে। আপনি অ্যাক্টিভেশন ব্যর্থ করতে চান তার উপর নির্ভর করে, ত্রুটি বার্তা থাকা সক্রিয়করণ ব্যর্থ করার চেষ্টা করার চেয়ে ভাল হতে পারে


2

যেহেতু আপনি শিরোনামটি আপডেট করেছেন আমাকে অন্য উত্তর সরবরাহ করা প্রয়োজন, পূর্ববর্তীটি দয়া করে এড়ানো হবে না কারণ এটি এইটির চেয়ে আরও সাধারণ।

add_action( 'admin_notices', 'my_plugin_admin_notices' );

function my_plugin_admin_notices() {
    if ( ! is_plugin_active( 'hello.php' ) && isset( $_GET['customhello'] ) ) {
        echo '<div class="error"><p>WordPress need to be at least 8.5 to activate this plugin</p></div>';
    }
}

add_action( 'activate_plugin', '_20170113_superess_activate', 10, 2 );

function _20170113_superess_activate( $plugin, $network_wide ) {
    global $wp_version;
    if ( $wp_version < 8.5 && 'hello.php' == $plugin ) {
        $redirect = self_admin_url( 'plugins.php?customhello=1' );
        wp_redirect( $redirect );
        exit;
    }
}

এখানে চিত্র বর্ণনা লিখুন

দয়া করে নোট করুন যে আপনি যখন প্লাগইন সক্রিয় করার চেষ্টা করবেন আপনি প্লাগইনস.এফপি ফাইলের সাথে ইন্টারঅ্যাক্ট করেন। সেখানে আপনার ক্রিয়াকলাপগুলির একটি বড় সুইচ রয়েছে যা আপনি চালাতে পারেন।

এবং যদি আপনার কাছে $_GET['error']কেবল পূর্বনির্ধারিত ত্রুটি বার্তা রয়েছে তখন এই মুহুর্তে আপনার ত্রুটি সেট হয়েছে - আপনি নিজের কাস্টম বার্তাটি তৈরি করতে পারবেন না। এই কারণেই আমি আপনাকে সমাধানটির প্রস্তাব এইভাবে দিয়েছি।

এখানে চিত্র বর্ণনা লিখুন

প্লাগইনগুলি কিছু প্রয়োজনীয়তা পূরণ না করে এমন ক্ষেত্রে ওয়ার্ডপ্রেস কোরকে অ্যাডমিন বিজ্ঞপ্তি হিসাবে কেউ কাস্টম বার্তাগুলির প্রস্তাব দিতে পারে।


3
এটা কাজ করে না. যদি প্লাগইন সক্রিয় না থাকে, ডাব্লুপি ফাইলে স্ক্রিপ্টগুলি কার্যকর করবে না, তাই, পুনর্নির্দেশ url টিপানোর সময়, ফাংশনটি হুক করা admin_noticesহয় না fired
জ্যাকপ্যারিস

0

হ্যালো.এফপি (হ্যালো ডলি) দমন করার জন্য এই কোডটি সম্পর্কে কীভাবে যদি ডাব্লুপি <8.5:

 add_action( 'activate_plugin', '_20170113_superess_activate' , 10, 2);

 function _20170113_superess_activate($plugin, $network_wide){
      global $wp_version;

      if ( $wp_version < 8.5 && 'hello.php' == $plugin ) {
        error_log( 'WordPress need to be at least 8.5' );      
        $args = var_export( func_get_args(), true );
        error_log( $args );
        wp_die( 'WordPress need to be at least 8.5 to activate this plugin' );
      }
 }

আমি মনে করি এটি ভাল কারণ এটি আপনাকে প্রশাসক বিজ্ঞপ্তি তৈরি করতে বাধ্য করে না। আপনি কেবল প্লাগইন ইনস্টল গর্ভপাতের কারণ সম্পর্কে প্রতিক্রিয়া পাবেন।

আমি হ্যালোডলির জন্য এই কোডটি যুক্ত করেছি, তবে আপনাকে সামঞ্জস্য করতে হবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.