Peringatan: Ini hanya tes untuk instalasi dev dan bukan situs produksi
Saya ingin tahu apakah ada solusi, bagi mereka yang ingin mengembangkan multisite pada instalasi dev mereka tetapi pada port yang berbeda dari :80
dan :443
, misalnya :8080
.
Saya hanya menemukan posting blog ini oleh Henri Benoit. Di sana ia memberikan contoh bagaimana memodifikasi inti 3.9.1, untuk mengatasi batasan inti.
Berikut adalah plugin yang harus digunakan di/wp-content/mu-plugins/wpse-ms-on-different-port.php
mana kami mencoba menghindari modifikasi inti:
<?php
/**
* Test for multisite support on a different port than :80 and :443 (e.g. :8080)
*
* Here we assume that the 'siteurl' and 'home' options contain the :8080 port
*
* WARNING: Not suited for production sites!
*/
/**
* Get around the problem with wpmu_create_blog() where sanitize_user()
* strips out the semicolon (:) in the $domain string
* This means created sites with hostnames of
* e.g. example.tld8080 instead of example.tld:8080
*/
add_filter( 'sanitize_user', function( $username, $raw_username, $strict )
{
// Edit the port to your needs
$port = 8080;
if( $strict // wpmu_create_blog uses strict mode
&& is_multisite() // multisite check
&& $port == parse_url( $raw_username, PHP_URL_PORT ) // raw domain has port
&& false === strpos( $username, ':' . $port ) // stripped domain is without correct port
)
$username = str_replace( $port, ':' . $port, $username ); // replace e.g. example.tld8080 to example.tld:8080
return $username;
}, 1, 3 );
/**
* Temporarly change the port (e.g. :8080 ) to :80 to get around
* the core restriction in the network.php page.
*/
add_action( 'load-network.php', function()
{
add_filter( 'option_active_plugins', function( $value )
{
add_filter( 'option_siteurl', function( $value )
{
// Edit the port to your needs
$port = 8080;
// Network step 2
if( is_multisite() || network_domain_check() )
return $value;
// Network step 1
static $count = 0;
if( 0 === $count++ )
$value = str_replace( ':' . $port, ':80', $value );
return $value;
} );
return $value;
} );
} );
Saya baru saja menguji ini pada instalasi dev saya, tetapi ini mungkin membutuhkan lebih banyak pemeriksaan tentu saja ;-)
echo get_clean_basedomain();
? Port yang didukung tampaknya:80
dan:443
.