आप यह एक अनुकूलित सूर्योदय के साथ कर सकते हैं। php फ़ाइल। यह अनिवार्य रूप से डोमेन मैपिंग प्लगइन कैसे काम करता है, हालांकि यह इस पर एक सुंदर फ्रंट एंड डालता है। कुछ कस्टम के लिए, आप मूल रूप से एक ही काम करने के लिए कुछ सरल PHP लिख सकते हैं।
मल्टीसाइट के सार में यह पता लगाना शामिल है कि किस साइट पर सेवा देनी है। डोमेन मैपिंग प्लगइन एक wp_domain_mapping तालिका बनाकर, और उसमें जानकारी संग्रहीत करके करता है। इस प्रकार जब इसे xxx.com के लिए अनुरोध मिलता है, तो यह उस तालिका में दिखता है और देखता है कि यह ब्लॉग_ड 123 से मेल खाता है।
सबसे पहले, एक वर्डप्रेस सेटअप बनाएं, और इसे मल्टीसाइट करें। कोई फर्क नहीं पड़ता कि यह वास्तव में कहाँ रहता है, क्योंकि हम वह सब बदलने जा रहे हैं। सरलता के लिए, मैं इसे blog.stackexchange.com पर रखूंगा और इसे एक उपनिर्देशिका प्रकार की साइट (वे आसान हैं) बना देंगे। निर्मित उपनिर्देशिका संभवतः स्लग होगी। / वर्डप्रेस, / सेब, / जो भी हो।
तो हाँ, के साथ शुरू करने के लिए, आप वास्तव में इसे blog.stackexchange.com/wordpress पर लाइव कर रहे हैं। अपने मंचन के माहौल पर विचार करें। जब आप प्रत्येक साइट बनाते हैं, तो आप यहां सामान कर सकते हैं जब तक आप मैपिंग चालू करने का निर्णय नहीं लेते।
अपने आप को डोमेन मैपिंग करने के लिए, प्लगइन के बिना, आप कुछ इस तरह करेंगे:
चरण एक: define( 'SUNRISE', 'on' );
अपने wp-config.php फ़ाइल के शीर्ष पर जोड़ें ।
चरण दो: wp-content निर्देशिका में एक sunrise.php फ़ाइल बनाएँ। <?php
शुरू करने के लिए शीर्ष पर रखें ।
चरण तीन: सूर्योदय। Php फ़ाइल में यह निर्धारित करने के लिए आपका तर्क होने वाला है कि किस साइट को लोड करना है।
आप इसे $_SERVER[ 'HTTP_HOST' ]
चर पर आधारित करने जा रहे हैं । आप यह कैसे करते हैं कि यह बिल्कुल आसान है: हालाँकि आप इसे करना चाहते हैं। यदि आप केवल देखने के लिए regex लिखना चाहते हैं '/blog\.(.*)\.stackexchange\.com/'
और फिर डेटाबेस में उस बिट की तलाश करते हैं, तो आप ऐसा कर सकते हैं।
चूँकि आप यहाँ "उपनिर्देशिका" के रूप में एक ही स्लग का उपयोग कर रहे हैं, इसलिए आपको एक अलग तालिका की आवश्यकता नहीं है। जिस साइट की आपको आवश्यकता है, उसे खोजने के लिए आप मुख्य wp_blogs तालिका में देख सकते हैं। इसके समान कुछ:
$current_blog = $wpdb->get_var( "SELECT blog_id FROM {$wpdb->blogs} WHERE path = '/wordpress/' LIMIT 1" );
एक बार जब आपके पास $ current_blog हो जाता है, तो आपको निम्न कोड की आवश्यकता होती है:
$current_blog->domain = $_SERVER[ 'HTTP_HOST' ];
$current_blog->path = '/';
$blog_id = $current_blog->blog_id;
$site_id = $current_blog->site_id;
$current_site = $wpdb->get_row( "SELECT * from {$wpdb->site} WHERE id = '{$current_blog->site_id}' LIMIT 0,1" );
$current_site->blog_id = $current_blog->blog_id;
यह वर्डप्रेस के एमयू कार्यों को करने के बजाय $ current_blog और $ current_site वैश्विक चर को परिभाषित करता है।
यह साइट को प्राप्त करने और काम करने के लिए पर्याप्त होगा (आपके DNS को इंगित करने के लिए और वर्चुअल होस्टिंग सामग्री को हल करने के बाद), हालांकि HTML कोड में उपयोग किए जाने वाले अधिकांश स्थिर URL अभी भी blog.stackexchange.com को इंगित करेंगे। / वर्डप्रेस, क्योंकि यह वह जगह है जहां साइट वास्तव में होगी। इसके अलावा, Canonical URL फ़ंक्शन संभवतः URL को पसंद नहीं करेगा और आपको भी रीडायरेक्ट करेगा।
इन समस्याओं के समाधान के लिए, आप संभवतः साइट से जुड़े कई URL को पूर्व-परिभाषित करना चाहेंगे। WP_SITEURL और WP_HOME जैसी चीजें। इसके अलावा, WP_CONTENT_URL, WP_PLUGIN_URL और WPMU_PLUGIN_URL। उस URL के अधिकांश मामलों को समायोजित किया जाना चाहिए।
अंत में, आप 'COOKIE_DOMAIN' सेट करना चाहते हैं। चूँकि आप संभवतः चाहते हैं कि लॉगिन को पूरी चीज़ में साझा किया जाए, तो आप इसे stackexchange.com पर सेट कर सकते हैं, या इससे भी अधिक यदि आप नहीं चाहते कि उन्हें साझा किया जाए।
यदि आप सामान्य स्टैकएक्सचेंज लॉगिन सिस्टम को वर्डप्रेस में एकीकृत करने के बारे में बात करना चाहते हैं, तो मैं उस पर भी सवालों के जवाब दे सकता हूं, लेकिन यह एक उत्तर का थोड़ा और विस्तृत होगा। :)
यदि आप इसके साथ और अधिक सहायता चाहते हैं तो मुझे बेझिझक ईमेल करें। सहायता के लिए खुशी: wordpress.org पर otto।