প্লাগইনগুলি লোড করার জন্য ওয়ার্ডপ্রেস প্রথম যে কাজটি করে তা হ'ল ডেটাবেজে সংরক্ষিত হিসাবে সক্রিয় প্লাগইনগুলি পাওয়া:
$active_plugins = (array) get_option( 'active_plugins', array() );
যেহেতু এটি ব্যবহার করে get_option()
আমরা option_active_plugins
ফ্লাইটটিতে সক্রিয় প্লাগিনগুলির তালিকা সংশোধন করতে ব্যবহার করতে পারি ।
function wpse_301282_disable_plugin( $active_plugins ) {
if ( defined( 'WP_CLI' ) && WP_CLI ) {
$key = array_search( 'gravityforms/gravityforms.php', $active_plugins );
if ( $key ) {
unset( $active_plugins[$key] );
}
}
return $active_plugins;
}
add_filter( 'option_active_plugins', 'wpse_301282_disable_plugin' );
gravityforms/gravityforms.php
আপনি যে প্লাগইনটি অক্ষম করতে চান তার কেবল ডিরেক্টরি এবং ফাইলের নাম দিয়ে প্রতিস্থাপন করুন ।
এখানে সমস্যাটি হ'ল আমরা প্লাগিনগুলির লোডকে প্রভাবিত করার চেষ্টা করছি, তাই প্লাগিনের মধ্যে থেকে আমরা এটিটি করতে পারি না , কারণ অনেক দেরি হয়ে গেছে। থিমটিতে খুব দেরি হবে।
শুকরিয়া ওয়ার্ডপ্রেসটির "অবশ্যই প্লাগইনগুলি অবশ্যই রয়েছে " এটি এমন প্লাগইন যা আপনি আগে এবং পৃথকভাবে লোড হওয়া নিয়মিত প্লাগইনগুলিতে যুক্ত করতে পারেন এবং নিয়মিত প্লাগইন তালিকায় উপস্থিত হন না।
অবশ্যই এই কোডটি অবশ্যই ব্যবহারের প্লাগইনটিতে যুক্ত করার জন্য যা যা করা দরকার তা হ'ল একটি wp-content/mu-plugins
ডিরেক্টরি তৈরি করা (যদি এটি ইতিমধ্যে বিদ্যমান না থাকে) এবং সেই কোডটিতে একটি পিএইচপি ফাইল (এটি কোনও কিছু বলা যেতে পারে) তৈরি করা। আপনার একটি প্লাগইন শিরোনাম বা অন্য কিছু প্রয়োজন নেই।
এখন ওয়ার্ডপ্রেস লোড হওয়ার সাথে সাথে সমস্ত কোডটি অন্য সমস্ত প্লাগইনের আগে সেই কোডটি লোড হবে। যেহেতু আমাদের ফিল্টারটি স্থানে রয়েছে, যখন ওয়ার্ডপ্রেস আপনি যে প্লাগইনটি অক্ষম করতে চান তা লোড করতে সক্রিয় প্লাগইনগুলির তালিকা পেলে ডাব্লুপি-সিএলআই সক্রিয় থাকলে সেই তালিকা থেকে ফিল্টার করা হবে।
get_option()
স্থানান্তরকারী / অনুরূপে মান সংরক্ষণ করা হয় এবং এই ফিল্টারটি এড়িয়ে গেলে তাড়াতাড়ি ফিরে আসবে? (বেশিরভাগ ক্ষেত্রেই এটি কাজ করে না, কেবলমাত্র অ্যাডমিন প্লাগইন স্ক্রিনে এটি কার্যকর হয়ে যায়)