অ্যাডন সানরাইজ ফাইল লোডার
Ultimate Multisite 2.8.0 অ্যাডনগুলির জন্য এবং কাস্টম MU-plugin ইন্টিগ্রেশনগুলির জন্য একটি সানরাইজ এক্সটেনশন লোডার যোগ করেছে। যে ইন্টিগ্রেশনগুলিকে WordPress সানরাইজ বুটস্ট্র্যাপিং চলাকালীন চলতে হয়, কিন্তু এর জন্য জেনারেট করা wp-content/sunrise.php ফাইলটি এডিট করার প্রয়োজন হয় না।
কখন এটি ব্যবহার করবেন
যখন আপনার ইন্টিগ্রেশনকে নিয়মিত প্লাগইন লোড হওয়ার আগেই চলতে হয়, তখন সানরাইজ এক্সটেনশন ব্যবহার করুন। উদাহরণস্বরূপ, কাস্টম ডোমেইন রাউটিং, হোস্ট-নির্দিষ্ট রিকোয়েস্ট হ্যান্ডলিং, বা প্রাথমিক নেটওয়ার্ক বুটস্ট্র্যাপ অ্যাডজাস্টমেন্টের ক্ষেত্রে এটি প্রয়োজন।
সাধারণ ইন্টিগ্রেশনের জন্য, নিয়মিত WordPress প্লাগইন, MU-plugins এ বং ডকুমেন্ট করা Ultimate Multisite হুকগুলি ব্যবহার করা ভালো। সানরাইজ কোড খুব তাড়াতাড়ি চলে এবং এটি ছোট, প্রতিরক্ষামূলক (defensive), এবং কোনো নির্ভরতা (dependency-free) মুক্ত থাকা উচিত।
ফাইল নামকরণের নিয়ম
একটি অ্যাডন ডিরেক্টরিতে sunrise.php নামে একটি PHP ফাইল তৈরি করুন, যার নামটি ultimate-multisite- দিয়ে শুরু হবে:
wp-content/plugins/ultimate-multisite-example-addon/sunrise.php
এই লোডারটি এই প্যাটার্নটি খুঁজে বের করার জন্য প্লাগইন ডিরেক্টরি স্ক্যান করে:
wp-content/plugins/ultimate-multisite-*/sunrise.php
মিল খুঁজে পাওয়া ফাইলগুলি অ্যাডন পাথ অনুযায়ী বর্ণানুক্রমিক ক্রমে লোড হয়।
ফাইলটি কোথায় রাখবেন
ফাইলটি সেই অ্যাডনটির রুট ডিরেক্টরিতে রাখুন যা সানরাইজ আচরণটির মালিক:
wp-content/
└── plugins/
└── ultimate-multisite-example-addon/
├── ultimate-multisite-example-addon.php
└── sunrise.php
এই স্ক্যানটি WP_CONTENT_DIR-এর সাপেক্ষে রেজলভ করা হয়, বর্তমান WP_PLUGIN_DIR মানের সাপেক্ষে নয়। এটি মাল্টি-টেন্যান্সি বা অন্যান্য প্রাথমিক বুটস্ট্র্যাপ কোড যখন সানরাইজের সময় প্লাগইন ডিরেক্টরি কনস্ট্যান্ট পরিবর্তন করে, তখনও ডিসকভারি প্রক্রিয়াকে স্থিতিশীল রাখে।
সরাসরি জেনারেট করা wp-content/sunrise.php ফাইলটি এডিট করবেন না। এই লোডারটি কাস্টম কোডকে সানরাইজ আচরণকে এক্সটেন্ড করতে দেয়, কিন্তু Ultimate Multisite যে কোর সানরাইজ ফাইলটি ইনস্টল এবং আপডেট করে, সেটি ফর্ক (fork) করতে হয় না।
উপলব্ধ হুক এবং ফিল্টার
অ্যাডন সানরাইজ ফাইলগুলি Ultimate Multisite ডোমেইন ম্যাপিং লোড করার পরে এবং WordPress ms_loaded ফায়ার করা র আগে চলে। এই সময়ে একটি সানরাইজ ফাইল যা করতে পারে:
$current_siteএবং$current_blogপড়তে বা ওভাররাইড করতে;- ডেটাবেস কনফিগারেশন লোড হওয়ার পরে
$wpdbঅ্যাক্সেস করতে; - প্রয়োজনে সানরাইজ-সময়ের কনস্ট্যান্ট সংজ্ঞায়িত করতে, যেমন
BLOG_ID_CURRENT_SITE; - Ultimate Multisite সানরাইজ হেল্পার স্টেট পড়তে, যার মধ্যে মাল্টি-টেন্যান্সি ইন্টিগ্রেশন দ্বারা ব্যবহৃত রাউটিং স্টেটও অন্তর্ভুক্ত।
Ultimate Multisite তার সানরাইজ লোডার শেষ করার পরে wu_sunrise_loaded ফায়ার করে। যে কোডটি সানরাইজ বুটস্ট্র্যাপ সম্পূর্ণ হওয়ার পরেও কিন্তু সানরাইজ লাইফসাইকেলের অংশ, তার জন্য এই অ্যাকশনটি ব্যবহার করুন।
শুধুমাত্র সেই ফাংশনগুলি কল করুন যা সানরাইজ ফেজে ইতিমধ্যেই লোড হয়েছে। ডেটাবেস-ভারী কাজ, টেমপ্লেট রেন্ডারিং, HTTP রিকোয়েস্ট এবং এমন কোড এড়িয়ে চলুন যা ধরে নেয় যে সাধারণ প্লাগইন লোড অর্ডার সম্পন্ন হয়েছ ে।
ন্যূনতম উদাহরণ
<?php
/**
* একটি কাস্টম হোস্ট ইন্টিগ্রেশনের জন্য সানরাইজ এক্সটেনশন।
*/
if (! defined('ABSPATH')) {
exit;
}
if (isset($current_blog) && $current_blog instanceof stdClass) {
// ms_loaded এর আগে প্রাথমিক রাউটিং বা কনস্ট্যান্ট অ্যাডজাস্ট করুন।
}
ফাইলটি ডিপ্লয় করার পরে, নিশ্চিত করতে একটি ম্যাপ করা ডোমেইন এবং একটি ম্যাপ করা নয় এমন মেইন-সাইট URL লোড করুন, যাতে উভয় পাথই সঠিকভাবে বুটস্ট্র্যাপ হয়।