Anda dapat melakukan ini dengan file sunrise.php yang dikustomisasi. Ini pada dasarnya cara kerja plugin pemetaan domain, namun menempatkan ujung depan yang cantik di atasnya. Untuk sesuatu yang khusus, Anda dapat menulis beberapa PHP sederhana untuk melakukan hal yang pada dasarnya sama.
Inti dari multisite melibatkan mencari tahu situs apa yang akan dilayani. Plugin pemetaan Domain melakukan ini dengan membuat tabel wp_domain_mapping, dan menyimpan informasi di sana. Jadi ketika mendapat permintaan untuk xxx.com, itu terlihat di tabel itu dan melihat bahwa itu sesuai dengan blog_id 123.
Pertama, buat pengaturan WordPress, dan buat multisite. Tidak masalah di mana itu benar-benar hidup, karena kita akan mengubah semua itu. Untuk mempermudah, saya akan meletakkannya di blog.stackexchange.com dan menjadikannya situs tipe subdirektori (lebih mudah). Subdirektori yang dibuat kemungkinan adalah siput. / wordpress, / apple, / terserahlah.
Jadi ya, untuk memulainya, Anda memang membuatnya langsung di blog.stackexchange.com/wordpress. Pertimbangkan ini lingkungan pementasan Anda. Saat Anda membuat setiap situs, Anda dapat melakukan hal-hal di sini sampai Anda memutuskan untuk mengaktifkan pemetaan.
Untuk melakukan pemetaan domain sendiri, tanpa plugin, Anda akan melakukan sesuatu seperti ini:
Langkah satu: tambahkan define( 'SUNRISE', 'on' );
ke bagian atas file wp-config.php Anda.
Langkah dua: buat file sunrise.php di direktori konten-wp. Letakkan <?php
di bagian atas untuk memulai.
Langkah tiga: Di file sunrise.php akan menjadi logika Anda untuk menentukan situs apa yang akan dimuat.
Anda akan mendasarkan ini pada $_SERVER[ 'HTTP_HOST' ]
variabel. Cara Anda melakukannya sebenarnya mudah: namun Anda ingin melakukannya. Jika Anda hanya ingin menulis regex untuk dicari '/blog\.(.*)\.stackexchange\.com/'
dan kemudian mencari bit itu di database, Anda bisa melakukannya.
Karena Anda menggunakan siput yang sama di sini sebagai "subdirektori", Anda tidak perlu tabel terpisah. Anda bisa melihat di tabel wp_blogs utama untuk menemukan situs yang Anda butuhkan. Sesuatu yang mirip dengan ini:
$current_blog = $wpdb->get_var( "SELECT blog_id FROM {$wpdb->blogs} WHERE path = '/wordpress/' LIMIT 1" );
Setelah Anda memiliki $ current_blog, maka Anda memerlukan kode berikut:
$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;
Ini pra-mendefinisikan variabel global $ current_blog dan $ current_site bukannya membiarkan fungsi MU WordPress melakukannya.
Ini akan cukup untuk membuat situs aktif dan berfungsi (setelah mendapatkan DNS Anda untuk menunjuk ke sana dan menyelesaikan hal-hal hosting virtual), namun sebagian besar URL statis yang digunakan dalam kode HTML masih akan mengarah ke blog.stackexchange.com / wordpress, karena di situlah situs itu akan benar-benar. Juga, fungsi URL Canonical mungkin tidak suka URL dan akan mengarahkan Anda juga.
Untuk mengatasi masalah ini, Anda mungkin juga ingin menentukan beberapa URL yang terkait dengan situs. Hal-hal seperti WP_SITEURL dan WP_HOME. Juga, WP_CONTENT_URL, WP_PLUGIN_URL, dan WPMU_PLUGIN_URL. Itu harus mencakup sebagian besar kasus URL yang sedang disesuaikan.
Terakhir, Anda ingin mengatur 'COOKIE_DOMAIN'. Karena Anda mungkin ingin login dibagikan secara keseluruhan, Anda bisa mengaturnya ke stackexchange.com, atau bahkan lebih tinggi jika Anda tidak ingin login itu dibagikan.
Jika Anda ingin berbicara tentang mengintegrasikan sistem login stackexchange normal ke WordPress, saya dapat menjawab pertanyaan itu juga, tetapi itu akan sedikit lebih rinci dari sebuah jawaban. :)
Jangan ragu untuk mengirim email kepada saya jika Anda ingin bantuan lebih lanjut dengan ini. Senang membantu: otto di wordpress.org.