Bunu özelleştirilmiş bir sunrise.php dosyasıyla yapabilirsiniz. Temel olarak etki alanı eşleme eklentisi bu şekilde çalışır, ancak bunun üzerine oldukça iyi bir ön uç ekler. Özel bir şey için, temelde aynı şeyi yapmak için bazı basit PHP yazabilirsiniz.
Çoklu sitenin özü, hangi siteye hizmet edileceğini bulmayı içerir. Domain mapping eklentisi bunu bir wp_domain_mapping tablosu oluşturarak ve bilgileri orada saklayarak yapar. Bu nedenle, xxx.com için bir istek aldığında, bu tabloya bakar ve bunun blog_id 123'e karşılık geldiğini görür.
İlk olarak, bir WordPress kurulumu yapın ve çok siteli yapın. Gerçekten nerede yaşadığı önemli değil, çünkü tüm bunları değiştireceğiz. Basit olması için, blog.stackexchange.com'a koydum ve bir alt dizin tipi site yaptım (bunlar daha kolay). Oluşturulan alt dizinler muhtemelen sümüklü böcek olacaktır. / wordpress, / apple, / her neyse.
Yani evet, başlamak için, gerçekten blog.stackexchange.com/wordpress adresinde canlı hale getiriyorsunuz. Bunu evreleme ortamınız olarak düşünün. Her siteyi oluşturduğunuzda, eşlemeyi açmaya karar verene kadar burada bir şeyler yapabilirsiniz.
Eklenti olmadan kendiniz alan adı eşlemesi yapmak için şöyle bir şey yaparsınız:
Birinci adım: define( 'SUNRISE', 'on' );
wp-config.php dosyanızın en üstüne ekleyin .
İkinci adım: wp-content dizininde sunrise.php dosyası oluşturun. <?php
Başlamak için en üste koyun .
Üçüncü adım: sunrise.php dosyasında hangi sitenin yükleneceğini belirlemek için mantığınız olacaktır.
Bunu $_SERVER[ 'HTTP_HOST' ]
değişkene dayandıracaksınız . Bunu nasıl yaptığınız tam olarak kolaydır: ancak bunu yapmak istersiniz. Aramak için bir regex yazmak '/blog\.(.*)\.stackexchange\.com/'
ve sonra veritabanında bu biti aramak istiyorsanız, bunu yapabilirsiniz.
Burada "altdizin" ile aynı slug kullandığınız için ayrı bir tabloya ihtiyacınız yoktur. İhtiyacınız olan siteyi bulmak için sadece ana wp_blogs tablosuna bakabilirsiniz. Buna benzer bir şey:
$current_blog = $wpdb->get_var( "SELECT blog_id FROM {$wpdb->blogs} WHERE path = '/wordpress/' LIMIT 1" );
$ Current_blog dosyasına sahip olduğunuzda, aşağıdaki koda ihtiyacınız vardır:
$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;
Bu, WordPress'in MU işlevlerinin bunu yapmasına izin vermek yerine $ current_blog ve $ current_site genel değişkenlerini önceden tanımlar.
Bu, siteyi kurmak ve çalıştırmak için yeterli olacaktır (DNS'inizi göstermesini ve sanal barındırma öğelerini sıraladıktan sonra), ancak HTML kodunda kullanılan statik URL'lerin çoğu hala blog.stackexchange.com'u gösterecektir. / wordpress, sitenin gerçekte olduğu yer burası. Ayrıca, Kurallı URL işlevi URL'yi beğenmez ve sizi de yönlendirir.
Bu sorunları çözmek için, muhtemelen siteyle ilişkilendirilmiş birkaç URL'yi önceden tanımlamak istersiniz. WP_SITEURL ve WP_HOME gibi şeyler. Ayrıca WP_CONTENT_URL, WP_PLUGIN_URL ve WPMU_PLUGIN_URL. Bu, ayarlanan URL'lerin çoğunu kapsamalıdır.
Son olarak, 'COOKIE_DOMAIN' ayarını yapmak isteyeceksiniz. Girişlerin büyük olasılıkla tümüyle paylaşılmasını istediğiniz için, stackexchange.com olarak ayarlayabilir veya hatta paylaşılan girişler olmasını istemiyorsanız daha da yükseltebilirsiniz.
Normal stackexchange giriş sistemini WordPress'e entegre etmek hakkında konuşmak isterseniz, bununla ilgili soruları da cevaplayabilirim, ancak bir cevap biraz daha ayrıntılı olacaktır. :)
Bu konuda daha fazla yardım isterseniz bana e-posta göndermekten çekinmeyin. Yardımcı olmaktan memnunum: otpress.com adresinde.