থিমের মাধ্যমে প্লাগইন / প্লাগইন ক্রিয়া অক্ষম করুন


19

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

ফাংশন.এফপি বা অন্য কোনও পদ্ধতি ব্যবহার করে প্লাগইন অক্ষম করা সম্ভব কিনা তা কি কেউ জানেন?

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

add_action('wp_head', 'add_google_analytics', 999999);
add_action('init', 'ga_outgoing_links');

আমি এই ক্রিয়াগুলি সাথে সরানোর চেষ্টা করেছি:

remove_action('wp_head','add_google_analytics',9999999);
remove_action('init', 'ga_outgoing_links');

কোন সাহায্য ব্যাপকভাবে প্রশংসা করা হয়।


আমার পক্ষে এটি প্রযুক্তিগতভাবে কাজ করা উচিত, সুতরাং আপনার এই কোডটি চালনার সময় সম্পর্কে কিছু আছে যা ভুল হয়ে যায় (খুব তাড়াতাড়ি বা খুব দেরিতে)। আরও তথ্য সরবরাহ করুন।
বিরল

হ্যাঁ, আমি ভেবেছিলাম এটিও কাজ করবে। অ্যাড / অপসারণ ক্রিয়াকলাপের সাথে আমার খুব বেশি অভিজ্ঞতা নেই তাই কীভাবে এটি আরও ডিবাগ করা যায় তা সম্পর্কে নিশ্চিত ছিলাম না। যদিও ইমামনের উত্তরটি কাজ করেছে, আপনি কী ধরণের আরও তথ্যের সন্ধান করছেন?
পিএনএমজি

আমি কিছুটা বিভ্রান্ত হয়ে পড়েছি - যদি ভাল ব্যবহারের প্রয়োজন হয় তবে সাধারণ উপায়ের মাধ্যমে প্লাগইনটি কেবলমাত্র অক্ষম করা সহজ নয়? যা EAMann এর উত্তর কেবল কোড দ্বারা করে। আমি ধরে নিয়েছি আপনি কোনও শর্তে এটি গতিশীল অক্ষম করতে চেয়েছিলেন ...
রার্স্ট

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

হ্যাঁ, এটাই আমি ভেবেছিলাম। তবে নিষ্ক্রিয়করণ কেবল অবিচ্ছিন্নভাবে প্লাগইন অক্ষম করে এবং স্পষ্টভাবে সক্রিয় না হওয়া অবধি এটি বন্ধ থাকবে। আপনার ব্যবহারের ক্ষেত্রে এটি উপযুক্ত নয়।
রর্স্ট

উত্তর:


25

ওয়ার্ডপ্রেস যখন একটি প্লাগইন সক্রিয় করে তখন এটি activate_plugin()ফাংশনটিকে কল করে । এই ফাংশনটি একটি স্যান্ডবক্সে প্লাগইনকে সক্রিয় করে এবং সাফল্যের অন্য কোনও জায়গায় পুনর্নির্দেশ করে। এটি কয়েকজন লেখক প্লাগইন নির্ভরতা সক্রিয় করার জন্য ব্যবহার করেছেন।

আর একটি ফাংশন রয়েছে, deactivate_plugin()এটি বিপরীতে একই কাজ করে ... আসলে আপনি যখন "নিষ্ক্রিয়" বা "অক্ষম করুন" ক্লিক করেন তখন ওয়ার্ডপ্রেস প্লাগ-ইনগুলি নিষ্ক্রিয় করে তোলে।

ইনস্টল হওয়া প্লাগইন নিষ্ক্রিয় করতে, কেবল কল করুন:

deactivate_plugins( '/plugin-folder/plugin-name.php' );

অথবা, একবারে একাধিক প্লাগইন নিষ্ক্রিয় করতে:

deactivate_plugins( array( '/first-plugin/first.php', '/second-plugin/second.php' ) );

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

deactivate_plugins( '/plugin-folder/plugin-name.php', true );

এটি কেবল প্লাগইনটি বন্ধ করে দেবে, তবে এটি নিষ্ক্রিয়করণের জন্য নিবন্ধিত প্লাগইনটিকে কোনও পদক্ষেপ দেবে না। সুতরাং, প্লাগইনটি নিষ্ক্রিয় হওয়ার সময় বিকল্পগুলি বা ডিবি টেবিলগুলি সরিয়ে ফেললে আপনি সেই তথ্যটি সংরক্ষণ করতে এবং অন্য কোথাও এটি ব্যবহার করতে এই "নীরব" নিষ্ক্রিয়করণটি করতে চান।


দুর্দান্ত উত্তর - এবং কেবল অন্যের সাথে তুলনা করা যায় না, আসুন বলি, অভাবহীন "এখানে একটি ওয়েবসাইট" উত্তর যা কাছাকাছি কোথাও হতে পারে।
সম্পাদক

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

আপনি কোনও নির্দিষ্ট সাইটে একবারে কেবল একটি থিম ব্যবহার করছেন ... তবে আপনি যদি থিমটি নিষ্ক্রিয় করার পরে প্লাগইনটি পুনরায় সক্রিয় করতে চান তবে তাও সম্ভব।
EAMAN

11

এটি উপরের ইমান এর উজ্জ্বল উত্তরের জন্য ধন্যবাদ এবং আমি ভেবেছিলাম এটি সম্ভবত মূল পোস্টারের পক্ষেও সহায়ক হতে পারে ...

ব্যবহারকারীরা প্রিমিয়াম সংস্করণ (সম্ভাব্য দ্বন্দ্ব এড়ানোর জন্য) আপলোড করলে আমার প্লাগইনটি নিষ্ক্রিয় করেছে তা নিশ্চিত করার জন্য আমার একটি সমাধানের প্রয়োজন ছিল। পূর্বে আমি এর_স্লু_প্লাগিন_একটিভের সাথে এর অবস্থাটি সনাক্ত করেছি এবং ব্যবহারকারীদের এটি স্যুইচ অফ করার অনুরোধ জানাতে একটি প্রশাসক ত্রুটি বার্তা দেখিয়েছি। এটি অনেক মসৃণ ...

function deactivate_plugin_conditional() {
    if ( is_plugin_active('plugin-folder/plugin-name.php') ) {
    deactivate_plugins('plugin-folder/plugin-name.php');    
    }
}
add_action( 'admin_init', 'deactivate_plugin_conditional' );

দ্রষ্টব্য: নিবন্ধ_অ্যাক্টিভেশন_ হুকটিতে কাজ করেছে বলে মনে হয় নি, তবে অ্যাডমিন_ইনিট একটি কবজির মতো কাজ করে।


1
কেবলমাত্র লক্ষণীয়ভাবেই আমি নিশ্চিত যে _ প্লাগিন_একটিভটি ইতিমধ্যে নিষ্ক্রিয়_প্লুগিন হুকটিতে চেক করা আছে যাতে এটি করার দরকার নেই
ব্রায়ান উইলিস

1

এখানে আমার সমাধান, এমন প্লাগইন তৈরি করুন যা অন্য প্লাগইনগুলিকে অক্ষম করতে পারে:

/*
 * Plugin Name: Disable/Configure Plugins
 * Description: Lets you disable/configure plugins based on environment variables
 * Author:      Chris Sewell
 */

/**
 * Disable specified plugins in development environment.
 * 
 * This is a "Must-Use" plugin. Code here is loaded automatically before regular plugins load.
 * This is the only place from which regular plugins can be disabled programatically.
 * 
 * Place this code in a file in WP_CONTENT_DIR/mu-plugins or specify a custom location 

 * to "development" or "production" in each particular server/environment.
 */

/* Disable specified plugins in development environment */
if (((getenv('environment') == 'production') || (getenv('environment') == 'alpha')) == false) {
    $plugins = array(
        'w3-total-cache/w3-total-cache.php'
    );
    require_once(ABSPATH . 'wp-admin/includes/plugin.php');
    deactivate_plugins($plugins);
}

এটিকে উত্পাদনে ঠেলাও, সক্ষম করুন, তারপরে আপনার স্থানীয় ডেভ মেশিনে ডাটাবেসটি নীচে আনুন।

সূত্র

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