Skip to content

Instantly share code, notes, and snippets.

@onnimonni
Last active December 12, 2016 17:48
Show Gist options
  • Save onnimonni/e347433e53a1459b5dc04f8d79ccea19 to your computer and use it in GitHub Desktop.
Save onnimonni/e347433e53a1459b5dc04f8d79ccea19 to your computer and use it in GitHub Desktop.
Ohjeet Multisiten asentaminen ja käyttämisestä

Steps for multisite

Tehdään alusta alkaen multisite eikä muuteta kesken singlesiteä multisiteksi.

Multisiten yläsivusto on syytä jättää tyhjäksi vain hallintatoimenpiteitä varten

Domain aliasten tekemiseen käytetään mercatoria

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' );

Adminin https uudelleenohjaus

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();
    }
}

Oletuksena hakukonekielto päällä

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 );
}

Multisiten asentaminen

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 );

Stagen ja tuotannon asentaminen

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment