কোডের মাধ্যমে প্লাগইনগুলি কীভাবে সক্রিয় করবেন?


22

যদি সম্ভব হয় তবে কীভাবে ইনস্টল করা প্লাগইনগুলি (ফাইলগুলি ডাব্লুপি-কনটেন্ট / প্লাগইন ডিরেক্টরিতে স্থাপন করা হয়েছে) অন্য প্লাগইন থেকে কীভাবে সক্রিয় করা যায়?

উত্তর:


30

আমি কিছু ওয়েব অ্যাপ্লিকেশনগুলিতে এটি এটি করেছি:

function run_activate_plugin( $plugin ) {
    $current = get_option( 'active_plugins' );
    $plugin = plugin_basename( trim( $plugin ) );

    if ( !in_array( $plugin, $current ) ) {
        $current[] = $plugin;
        sort( $current );
        do_action( 'activate_plugin', trim( $plugin ) );
        update_option( 'active_plugins', $current );
        do_action( 'activate_' . trim( $plugin ) );
        do_action( 'activated_plugin', trim( $plugin) );
    }

    return null;
}
run_activate_plugin( 'akismet/akismet.php' );

1
রার্স্ট যেমন লিখেছেন, এটি খুব "নিরাপদ" নয়। আপনার নিশ্চিত হওয়া উচিত যে আপনি যে প্লাগইনগুলি এইভাবে সক্রিয় করেন সেগুলি নিরাপদ / আপনার সাইটটি ভাঙবে না।
sorich87

10
এমনকি মোটেও নিরাপদ নয়, তবে হেক, আপনি যদি তাদের প্রোগ্রামগতভাবে সক্রিয় করেন তবে আপনি কী করছেন তা আপনার ধারণা করা উচিত। ;-)
ডেনিস ডি বার্নার্ডি

সুরক্ষা একপাশে - মানে, এটি প্রশ্নের অংশ নয়, তাই না? - আমি সরিচের পদ্ধতির পছন্দ করি কারণ এটি স্ট্যান্ডার্ড অ্যাক্টিভেশন ফিল্টারগুলিকে বলে। সুতরাং প্লাগইনগুলির কিছু থাকলে তাদের সেটআপ রুটিনগুলি চালনার জন্য পরিবর্তন আসে।
hakre

3
এটি, অন্তত আরও সম্প্রতি, চাকাটি পুনরায় উদ্ভাবন করছে। আমি অন্তর্নির্মিত ব্যবহার করেছি activate_plugin(), এবং এটি একই কাজ করে বলে মনে হচ্ছে।
জেক

1
@ সেজিভিএসইও এটি পুরোপুরি নিরাপদ - এটি ব্যবহারকারীর ইনপুট / অনুমোদনের প্রয়োজন ছাড়াও ডাব্লুপি কীভাবে এটি করে তার অনুরূপ এবং সেই ন্যাক্সগুলির জন্য ননেস এবং চেক গঠন করে - কেবল এই ফাংশনটি আরম্ভ করার জন্য প্রয়োজনীয় চেকগুলি প্রবর্তন করুন - যাতে এটি বাইরে থেকে প্রবেশ করা যায় না (থেকে ওয়েব ইত্যাদি), এবং এটিকে এলোমেলোভাবে কোনওভাবে বলা যাবে না।
একতা 100

13

প্লাগিন অ্যাক্টিভেশন প্রক্রিয়া ডাব্লুপি অ্যাডমিন ইন্টারফেসের সাথে কাজ করার জন্য কোডেড। এটি ত্রুটিযুক্ত প্লাগইনগুলি সক্ষম করা রোধ করতে কিছু পরীক্ষা করে (শুরুতে লোড করা ডাব্লুপি ভেঙে দেয়)।

এটি activate_plugin()ফাংশন ( উত্স ) দ্বারা পরিচালিত হয় যা অন্য কোথাও অপ্রয়োজনীয় হিসাবে নথিভুক্ত।

সুতরাং আপনি কোড দ্বারা প্লাগইন সক্রিয় করতে চাইলে লক্ষ্যটি নিজেই তুলনামূলকভাবে সহজ - active_pluginsসেই প্লাগইনটি অন্তর্ভুক্ত করার বিকল্প পরিবর্তন করতে। তবে আপনাকে স্ক্র্যাচ থেকে সম্পর্কিত অ্যাক্টিভেশন হুকগুলি পুনরায় তৈরি করতে হবে এবং স্যান্ডবক্স ধাপ ছাড়াই সক্রিয়করণের মাধ্যমে ব্রেকিং সাইটটি ঝুঁকিপূর্ণ হবে।


7

প্লাগইনগুলি 'সক্রিয়_প্লাগিনস' বিকল্পে একটি অ্যারেতে সঞ্চয় করা হয়। অ্যারেটিতে প্রতিটি প্লাগইন সক্রিয় থাকা ফাইল পাথ থাকে।

একটি প্লাগইন সক্রিয় করতে আপনাকে এটির পথটি কী হবে তা নির্ধারণ করতে হবে, তারপরে সেই পথটি পাস করুন activate_plugin($plugin_path)

যদিও এটি করা হয়েছে তার চেয়ে সহজ, এবং (কমপক্ষে ২.৯-এ) মূল কোডটি সহজ করে না।

আপনি প্লাগইন () সক্রিয় করার আগে আপনার প্লাগইন.এফপি ফাইলটি ডাব্লুপি-অ্যাডমিন / অন্তর্ভুক্ত / থেকে অন্তর্ভুক্ত করতে হবে। আপনার প্লাগইন ইতিমধ্যে সক্রিয় নেই তা নিশ্চিত করার জন্য আপনারও পরীক্ষা করা উচিত। ফলাফলটি এরকম কিছু দেখাচ্ছে (ওয়াইএমএমভি):

// Define the new plugin you want to activate
$plugin_path = '/path/to/your/new/plugin.php';
// Get already-active plugins   
$active_plugins = get_option('active_plugins');
// Make sure your plugin isn't active
if (isset($active_plugins[$plugin_path]))
    return;

// Include the plugin.php file so you have access to the activate_plugin() function
require_once(ABSPATH .'/wp-admin/includes/plugin.php');
// Activate your plugin
activate_plugin($plugin_path);

আমি এটি ডাব্লুপি ২.৯-এ উত্পাদনে ব্যবহার করি এবং কোনও বড় সমস্যা হয়নি তবে আমার পরীক্ষায় এটি ডাব্লুপিএমইউর সাথে খুব অপ্রত্যাশিত ফলাফল পেয়েছে, তাই নেটওয়ার্ক ইনস্টলগুলিতে এটি ব্যবহার করে সাবধান থাকুন।


একটি দীর্ঘ সময় অতিবাহিত হয়েছে কিন্তু আপনি যদি মনে করেন, এটিতে অপ্রত্যাশিত ফলাফল কী ছিল?
alnsal কর্কমাজ

আমি পুরোপুরি মনে নেই। আমি মনে করি এটি ঠিক কাজ করে না এবং আমি হাতে হাতে জিনিসগুলি করতাম কারণ আমার অনেক বেশি এমএস সাইট ছিল না।
জার্কার্ক

আমি কীভাবে এটি কার্যকর করব? যদি আমি কেবল এটি সরাসরি চালিত করি, get_option সংজ্ঞায়িত করা হয় না ...
জানুস ট্রয়লসন

এটি ফাংশন.এফপিতে যুক্ত করুন এবং এটি কাজ করা উচিত, তবুও আপনার সর্বদা জিনিসগুলি ফাংশনগুলিতে রাখা উচিত এবং এগুলি "init" বা "ডাব্লুপিপি" তে আবদ্ধ করা উচিত।
জার্কার্ক

3

ডাব্লুপি কোডেক্স অনুসারে ওয়ার্ডপ্রেস প্লাগইনগুলি সক্রিয় করার জন্য একটি ফাংশন সরবরাহ করে

function plugin_activation( $plugin ) {
    if( ! function_exists('activate_plugin') ) {
        require_once ABSPATH . 'wp-admin/includes/plugin.php';
    }

    if( ! is_plugin_active( $plugin ) ) {
        activate_plugin( $plugin );
    }
}

plugin_activation('akismet/akismet.php');

ইথান, আমার উত্তরটাতে কী ভুল?
মাউশন

কোনও উত্তর দেওয়ার জন্য কেবল কোডটি পোস্ট করা ঠিক আছে, তবে আপনার উত্তরটি পড়া কোনও নতুন প্রোগ্রামারদের জন্য ব্যাখ্যা করা কঠিন হতে পারে। আপনার কোড কীভাবে কাজ করে তার ওপিতে আরও ভাল ধারণা থাকতে পারে।
ইথান জিঙ্কস ও'সুলিভান

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