คุณสามารถทำได้ด้วยไฟล์ sunrise.php ที่กำหนดเอง นี่เป็นวิธีการทำงานของปลั๊กอินการแมปโดเมน แต่มันทำให้ส่วนหน้าสวย สำหรับสิ่งที่กำหนดเองคุณสามารถเขียน PHP อย่างง่าย ๆ เพื่อทำสิ่งเดียวกัน
สาระสำคัญของเว็บไซต์หลายรายการนั้นเกี่ยวข้องกับการค้นหาว่าไซต์ใดให้บริการ ปลั๊กอินการแมปโดเมนทำได้โดยสร้างตาราง wp_domain_mapping และเก็บข้อมูลไว้ในนั้น ดังนั้นเมื่อได้รับการร้องขอสำหรับ xxx.com จะมีลักษณะในตารางนั้นและเห็นว่าสอดคล้องกับ blog_id 123
ก่อนอื่นทำการตั้งค่า WordPress และทำให้เป็นแบบหลายไซต์ ไม่สำคัญว่าจะอยู่ที่ใดเพราะเราจะเปลี่ยนทุกอย่าง เพื่อความง่ายฉันจะใส่ไว้ที่ blog.stackexchange.com และทำให้เป็นเว็บไซต์ประเภทไดเรกทอรีย่อย (ง่ายกว่า) ไดเรกทอรีย่อยที่สร้างขึ้นน่าจะเป็นตัวบุ้ง / wordpress, / apple, / อะไรก็ตาม
ใช่แล้วคุณจะเริ่มต้นได้ที่ blog.stackexchange.com/wordpress พิจารณาสภาพแวดล้อมการจัดเตรียมของคุณ เมื่อคุณสร้างแต่ละไซต์คุณสามารถทำสิ่งต่างๆได้ที่นี่จนกว่าคุณจะตัดสินใจเปิดการแมป
หากต้องการทำแผนที่โดเมนด้วยตัวเองโดยไม่มีปลั๊กอินคุณจะทำสิ่งนี้:
ขั้นตอนที่หนึ่ง: เพิ่มdefine( 'SUNRISE', 'on' );
ไปที่ด้านบนของไฟล์ wp-config.php ของคุณ
ขั้นตอนที่สอง: สร้างไฟล์ sunrise.php ในไดเรกทอรี wp-content ใส่<?php
ที่ด้านบนเพื่อเริ่มต้นด้วย
ขั้นตอนที่สาม: ในไฟล์ sunrise.php จะเป็นตรรกะของคุณสำหรับการพิจารณาว่าจะโหลดเว็บไซต์ใด
คุณจะเอาพื้นฐานมาจาก$_SERVER[ 'HTTP_HOST' ]
ตัวแปร วิธีที่คุณทำนั้นง่ายมาก แต่คุณต้องการทำเช่นนั้น ถ้าคุณต้องการเขียน regex เพื่อค้นหา'/blog\.(.*)\.stackexchange\.com/'
จากนั้นค้นหา bit นั้นในฐานข้อมูลคุณสามารถทำได้
เนื่องจากคุณใช้กระสุนแบบเดียวกับที่นี่เป็น "ไดเรกทอรีย่อย" คุณไม่จำเป็นต้องใช้ตารางแยกต่างหาก คุณสามารถดูในตาราง 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 แทนการปล่อยให้ฟังก์ชั่น MU ของเวิร์ดเพรสทำ
นี่จะเพียงพอที่จะทำให้ไซต์ใช้งานได้ (หลังจากที่ DNS ของคุณชี้ไปที่ไซต์นั้นและทำให้ข้อมูลโฮสต์เสมือนแยกออก) อย่างไรก็ตาม URL คงที่ส่วนใหญ่ที่ใช้ในรหัส HTML จะยังคงชี้ไปที่ blog.stackexchange.com / wordpress เนื่องจากเป็นที่ที่ไซต์จะเป็นเช่นนั้น นอกจากนี้ฟังก์ชั่น Canonical URL อาจไม่ชอบ URL และจะเปลี่ยนเส้นทางคุณเช่นกัน
หากต้องการแก้ไขปัญหาเหล่านี้คุณอาจต้องการกำหนด URL จำนวนมากที่เชื่อมโยงกับเว็บไซต์ไว้ล่วงหน้า สิ่งต่าง ๆ เช่น WP_SITEURL และ WP_HOME นอกจากนี้ WP_CONTENT_URL, WP_PLUGIN_URL และ WPMU_PLUGIN_URL ซึ่งควรครอบคลุมกรณีส่วนใหญ่ของ URL ที่ถูกปรับ
สุดท้ายคุณจะต้องตั้งค่า 'COOKIE_DOMAIN' เนื่องจากคุณต้องการให้การเข้าสู่ระบบถูกแชร์ไปทั่วทุกสิ่งคุณสามารถตั้งค่าเป็น stackexchange.com หรือสูงกว่าหากคุณไม่ต้องการให้พวกเขาแชร์การเข้าสู่ระบบ
หากคุณต้องการพูดคุยเกี่ยวกับการรวมระบบการเข้าสู่ระบบ stackexchange ปกติเข้ากับ WordPress ฉันสามารถตอบคำถามเกี่ยวกับเรื่องนั้นได้เช่นกัน :)
อย่าลังเลที่จะส่งอีเมลฉันหากคุณต้องการความช่วยเหลือเพิ่มเติมกับเรื่องนี้ ดีใจที่ได้ช่วยเหลือ: otto ที่ wordpress.org