দ্রষ্টব্য: @scribu এবং @kaiser এর মধ্যে আলোচনা আরও সহজ করার জন্য এই উত্তরটি এখানে। মোডস: দয়া করে মুছবেন না। ব্যবহারকারী / পাঠক: দয়া করে ভোট দিন না। আপনি যদি আলোচনাটি অনুসরণ করতে চান তবে পুনর্বিবেচনা / সম্পাদনা লগটি একবার দেখুন। আপনি যদি আলোচনায় যোগ দিতে চান তবে উত্তরটি সম্পাদনা করুন। আলোচনার যদি কোনও ফলাফল হয়, তবে এটি হিসাবে চিহ্নিত হবে। ধন্যবাদ.
প্রেক্ষাপটে
ওজন আলাদা যেগুলি বিভিন্ন পরিস্থিতিতে আছে, যেখানে আপনি একটি প্লাগইন নির্ভরতা থাকতে পারে। (উদাহরণগুলি কেবল কাল্পনিক)। "(মূল) প্লাগইন" শব্দটি পিতামাতার দৃষ্টিকোণ থেকে "থিম" দিয়ে বিনিময় করা যায়।
- (শক্ত) একটি শিশু প্লাগইন যা কেবলমাত্র কার্যকারিতা প্রসারিত করে বা বিদ্যমান প্লাগইনের প্রদর্শন (এবং অনুরূপ) পরিবর্তিত করে এবং তাই পিতামাতাকে ছাড়া বিদ্যমান থাকতে পারে না। উদাহরণ: বাডিপ্রেস »বাডিপ্রেস-ফানকি কমেন্টসডিপ্লে
- (স্বাভাবিক) একটি প্লাগইন যা শিশু প্লাগইন সক্রিয় হওয়ার সময় কার্যকারিতা বাড়িয়ে তোলে। উদাহরণ: jQueryAttachmentCarousel »jQuerySlideDeck
- (নরম) একটি প্লাগইন যা কেবল একটি বৈশিষ্ট্য যুক্ত করে। উদাহরণ: ডিজনি ওয়ান্ডারল্যান্ড থেম »মিকিজসোসিয়াল লিংক
নীচে আমি "অন্যান্য" প্লাগইন আপডেট করি এবং চেকটি আর কাজ করে না তখন কী হয় তা স্কেচ করার চেষ্টা করি।
- বিজ্ঞাপন 1) বুডিপ্রেস অ্যাক্টিভেট করা ছাড়া প্লাগইনটির অস্তিত্ব থাকতে পারে না »স্টাফ সম্পূর্ণরূপে ভেঙে যায়।
- বিজ্ঞাপন 2) প্লাগইনটি কারাউসেল থেকে স্লাইডডেকে স্যুইচ করার বিকল্পটি দিতে পারে নি »তারযুক্ত প্রদর্শনগুলি প্রদর্শন করে (আমি ধরে নিই যে শৈলীগুলি স্লাইডডেকে পরিবর্তিত হয়েছে)।
- বিজ্ঞাপন 3) মিকিস্কোসিয়াল লিঙ্কগুলি অদৃশ্য হয়ে যায়।
চেক
এর বিরুদ্ধে চেক করার জন্য তিনটি সম্ভাবনা রয়েছে, আপনি যদি কোনও প্লাগইন সক্রিয় কিনা তা জানতে চান:
- উ: ফোল্ডারটি কি বিদ্যমান?
- খ। মূল ফাইল - বিকল্প
'active_plugins'
- উপস্থিত আছে?
- সি একটি নির্দিষ্ট ফাংশন বিদ্যমান?
আমি যদি এখন আমার অভ্যন্তরীণ লিঙ্ক পরীক্ষক প্লাগইনটিকে উদাহরণ হিসাবে গ্রহণ করি , এটি কোনও পাবলিক এপিআই সরবরাহ করে না এবং এটি বাড়ানো নয়, তবে আমি দাবিতে বা কেবল ইচ্ছামতো অভ্যন্তরীণ ফাংশন নাম পরিবর্তন না করার কোনও কারণ (লেখক হিসাবে) দেখতে পাচ্ছি না । সুতরাং যদি কেউ এই প্লাগইনে পিগব্যাক করার চেষ্টা করে, তবে স্টাফগুলি আপডেটে কেবল (কার্যকারিতা এবং বান্ডিলিংয়ের দৃ tight়তার উপর নির্ভর করে) ব্রেক হবে। ফাইলের নামের ক্ষেত্রেও একই কথা। ফাইল নেমটি পরিবর্তন না করার জন্য আমার কোনও আসল কারণ নেই (প্লাগইন আপডেটে নিষ্ক্রিয় হয়ে যাবে)। ফোল্ডারের নাম পরিবর্তন করতে আমাকে কেবল আটকাবে কেবল তা হল আপডেট চেক ও বিজ্ঞপ্তিটি ফাইলের নামের বিরুদ্ধে চলে - যদি এটি সরকারী রেপোতে হোস্ট করা থাকে।
সুতরাং আমি (পিতামাতার) প্লাগইনটির সবচেয়ে শক্তিশালী (পরিবর্তনের পক্ষে সহজ) পরিবর্তনের বিরুদ্ধে অনেক কথা বলব):
ফাংশন »প্রধান ফাইলের নাম» ফোল্ডার
যখন আমি বলেছিলাম যে কোনও ফাংশন চেক ব্যবহার করার চেয়ে কম ভঙ্গুর, is_plugin_active()
আমি ধরে নিয়েছিলাম যে প্রশ্নে থাকা ফাংশনটি প্লাগইন লেখক স্পষ্টভাবে উত্সাহিত করে। এর চূড়ান্ত উদাহরণ wp_pagenavi()
হ'ল ডাব্লুপি-পেজনাভি প্লাগইন দ্বারা প্রদত্ত টেম্পলেট ট্যাগ।
নির্ভরতা নির্ধারণে অসুবিধা হ'ল ফাইলের নাম জড়িত না এমন প্লাগইনগুলি অনন্যভাবে সনাক্ত করার কোনও মানক উপায় নেই।
বিষয় সম্পর্কে আরও চিন্তাভাবনা:
http://wordpress.org/support/topic/plugin-plugin-dependencies-unreliable-plugin-namingidentifying-scheme
আমার ধারণা আমরা এখনও পর্যন্ত তিনটি পয়েন্টে এটি যোগ করতে পারি:
- আমরা কিছুটা ভিন্ন বিষয়ে কথা বলেছি
- আমরা সম্মত হই যে বিষয়টি কী হবে বলে আমার মনে হয়েছিল বুলেটপ্রুফের কোনও উপায় নেই around
- আপনার প্রশ্নের উপলব্ধি থেকে আপনি বৈধ পথে যাবার প্রস্তাব দিয়েছেন
(এতদূর) স্মার্টতম উপায়টি আমি ভাবতে পারি যে আমি ইতিমধ্যে কয়েকটি (খুব কম) প্লাগিনে দেখেছি:
// inside the plugin file:
add_action( 'plugin_custom_hook', 'plugin_trigger' );
// inside some template:
do_action( 'plugin_custom_hook' );
এ সম্পর্কে খুব বেশি চিন্তা না করেই, তবে আমি অনুমান করি আপনি 'অল' ফিল্টারের একটি চেকের জন্য আপনার নোটিশটি আটকে দিতে পারেন এবং বর্তমান ফিল্টারটির ভিতরে যদি আপনি shutdown
হুকের উপরে উপস্থিত হন তখন এটি পরীক্ষা করতে পারে ...?
হুক ব্যবহার করা 'স্বাভাবিক' এবং 'দুর্বল' নির্ভরতার জন্য ভাল কাজ করবে। একমাত্র ত্রুটিটি হ'ল আপনাকে এখনও ব্যবহার করতে হবে function_exists()
বা is_plugin_active()
যদি নির্ভরতা না মেটানো হয় তবে আপনি থামতে চান। এর জন্য 'সমস্ত' ফিল্টার ব্যবহার করা খুব ব্যয়বহুল আইএমও হবে।
@scibu এটি "আপনার" বিষয়টিকে লক্ষ্যযুক্ত করা হয়েছিল। (আমি ইতিমধ্যে আমার সম্পর্কে কথা বাদ দিয়েছি)। :)
সুতরাং মূলত, আপনার যদি নির্ভরতা প্রয়োজন - এবং আপনার একজন ভাল লেখক রয়েছে - তবে সে পরিবর্তে / কোনও টেম্পলেট ট্যাগের প্রতিস্থাপন হিসাবে একটি হুক সরবরাহ করতে পারে। হুক উপস্থিত থাকলে বা কেবল কিছুই না করলে প্লাগইনটি কেবল এতে প্রবেশ করত। প্লাগইন উপস্থিত না থাকলে এবং অন্যদিকে আপনার কোনও ত্রুটি হবে না।
এখানে একটি শক্ত অংশ (বা আরও বেশি প্রশ্ন): "আপনাকে» ডিজনিওয়ান্ডারলিঙ্কস to "ইনস্টল করতে হবে" নির্ভরতা সম্পর্কে ব্যবহারকারীকে অবহিত করতে প্রশাসক বিজ্ঞপ্তি লিখতে, আপনি এটি পরীক্ষা করতে পারেন array_keys( $GLOBALS['wp_filter']['template_tag_like_hook'] )
। আমি নিশ্চিত না এটি কাজ করে কিনা, তবে আফিক অ্যারে উভয় পক্ষেই (জনসাধারণ / প্রশাসক) অ্যাক্সেসযোগ্য হওয়া উচিত।
যে কাজ করবে না। কলব্যাক হুকটিতে নিবন্ধিত হওয়ার কারণে এর অর্থ এই নয় যে প্রত্যাশিত হলে হুকটি ট্রিগার হবে। একমাত্র জিনিস যা ধরণের ধরণের কাজ করবে তা হল 'শাটডাউন' হুক ব্যবহার করা, যা আপনি আগে উল্লেখ করেছেন:
add_action( 'shutdown', function() {
if ( !did_action( 'template_tag_like_hook' ) )
echo 'Problem.';
} );
অবশ্যই, এটি একেবারে নীচে, </html>
ট্যাগের পরে , সামনের প্রান্তে (যেহেতু টেমপ্লেট ট্যাগগুলি সাধারণত ব্যবহৃত হয়) মুদ্রিত হবে , যা খুব বেশি ব্যবহার হয় না।
আপনি বার্তাটি wp_options এ সঞ্চয় করার চেষ্টা করতে পারেন এবং তারপরে এটি প্রশাসক অঞ্চলে প্রদর্শন করতে পারেন তবে এটি কীটগুলির সম্পূর্ণ নতুন ক্যানটি খুলতে পারে: অবৈধকরণ, ক্যাচিং প্লাগইন ইত্যাদি etc.
function_exists
, তবে একজন সাধারণ ব্যবহারকারী কেবল মেসেজটি পাবেন, যে কোনও প্লাগইন নির্ভর করে যে প্লাগইন তিনি ইনস্টল করেননি। সমস্যা ব্যবহারকারীকে আসলে হয় হবে প্লাগইন ইনস্টল করা আছে এবং তারপর মাত্র কেন এটা আশ্চর্য কাজ doens't । ওহ, এবং আমি আপনাকে এর জন্য হ্রাস করব না ।