Tehdään alusta alkaen multisite eikä muuteta kesken singlesiteä multisiteksi.
Multisiten yläsivusto on syytä jättää tyhjäksi vain hallintatoimenpiteitä varten
https://github.com/humanmade/Mercator
Tee lisäksi mu-plugari mikä disabloi SSO:n jotta ei saada redirect looppeja
<?php
/**
* Plugin Name: Disable mercator SSO
* Description: Disables Single-Sign-On feature with mercator
* Version: 0.1
* Author: Onni Hakala / Geniem Oy
* Author URI: https://github.com/onnimonni
* License: MIT
*/
add_filter( 'mercator.sso.enabled', '__return_false' );
Tämä plugari uudelleenohjaa alias domainien hallinta urlit päädomainiin jotta https toimii oikein:
<?php
/**
* Plugin Name: Mercator https domain alias
* Description: Redirects mercator aliases into main site when wp-admin is accessed
* Version: 0.1
* Author: Onni Hakala / Geniem Oy
* Author URI: https://github.com/onnimonni
* License: MIT
*/
// If User wants to get into /wp-admin or /wp-login redirect them into the main domain
if ( substr( $_SERVER['REQUEST_URI'], 0, strlen( '/wp-admin' ) ) === '/wp-admin' ||
substr( $_SERVER['REQUEST_URI'], 0, strlen( '/wp-login' ) ) === '/wp-login'
) {
// Check if we are in mercator alias and redirect wp-admin and wp-login requests into real domain
$mapping = Mercator\Mapping::get_by_domain( $_SERVER['HTTP_HOST'] );
// If mapping was found redirect into the main domain
if ( $mapping !== null ) {
$redirect = get_site_url( $mapping->get_site_id(), $_SERVER['REQUEST_URI'], 'https' );
// Add some debugging information
header( "X-Site-Mapping: " . $mapping->get_site_id() );
// wp_redirect can't be used yet
header( "Location: {$redirect}" );
http_response_code( 302 );
die();
}
}
Jos halutaan hakukonekielto uusiin sivuihin niin tämä auttaa
<?php
/**
* Plugin Name: New blogs are not public
* Description: Sets new blogs as non public when they are created
* Version: 0.1
* Author: Onni Hakala / Geniem Oy
* Author URI: https://github.com/onnimonni
* License: MIT
*/
/**
* Hide new blog from search engines
* - Hooks into wpmu_new_blog which is run after site has been created
*
* @param int $blog_id Blog ID.
* @param int $user_id User ID.
* @param string $domain Site domain.
*/
add_action( 'wpmu_new_blog', 'turkuamk_new_blog_non_public', 10, 3 );
function turkuamk_new_blog_non_public( int $blog_id, int $user_id, string $domain ) {
update_blog_option ( $blog_id, 'blog_public', 0 );
}
Lisää ensin config/application.php tiedostoon tämä:
/* Multisite */
define( 'WP_ALLOW_MULTISITE', true );
Sen jälkeen voit mennä wp-adminiin ja käyttää Työkalut kohtaa ja muuttaa asennuksen multisiteksi.
Muista käyttää subdomain installia
Asennuksen jälkeen lisää myös nämä config/application.php
tiedostoon.
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true );
define( 'DOMAIN_CURRENT_SITE', parse_url( env('WP_HOME'), PHP_URL_HOST ) );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
Tämä täytyy tehdä siten että devin tietokanta siirretään tyhjään stageen tai tuotantoon koska multisiteä ei voi asentaa tyhjästä jos application.php
sisältää jo valmiiksi MULTISITE
definet.