Existe uma maneira de definir domínios wp_blogs em wp-config?

Na minha configuração de vários sites, eu tenho vários ambientes que eu quero compartilhar o mesmo database, mas uso domínios diferentes.

  • server1.example.com
  • server2.example.com
  • example.com

… cada uma delas apontaria para o mesmo database. Isso funciona perfeitamente bem em uma instalação WP padrão usando define( 'WP_HOME', 'http://server1.example.com' ); e define( 'WP_SITEURL', 'http://server1.example.com' ); .

Quando você adiciona multisite à mistura quebra.

O problema é que a tabela wp_blogs define os domínios, então eu preciso de uma maneira de defini-los no arquivo de configuração. Existe alguma maneira de fazer isso?

Solutions Collecting From Web of "Existe uma maneira de definir domínios wp_blogs em wp-config?"

Quando o WordPress carrega multisite, ele inclui os arquivos específicos MS específicos em wp-settings.php

As linhas relevantes:

 < ?php // Initialize multisite if enabled. if ( is_multisite() ) { require( ABSPATH . WPINC . '/ms-blogs.php' ); require( ABSPATH . WPINC . '/ms-settings.php' ); } elseif ( ! defined( 'MULTISITE' ) ) { define( 'MULTISITE', false ); } 

ms-settings.php tem um propósito semelhante ao wp-settings.php : carrega o ambiente multisite e, o mais importante para nossos propósitos, configura o site atual (coleção de blogs) e blog. Mas também há estas poucas gemas:

 if ( defined( 'SUNRISE' ) ) include_once( WP_CONTENT_DIR . '/sunrise.php' ); /** Check for and define SUBDOMAIN_INSTALL and the deprecated VHOST constant. */ ms_subdomain_constants(); if ( !isset( $current_site ) || !isset( $current_blog ) ) { // setup current site and blog } 

O mais importante: if(defined('SUNRISE')) . Isso permite que você solte um arquivo sunrise.php no seu diretório de wp-content . Ele é incluído se você define('SUNRISE', true); no seu wp-config.php . Este arquivo é o mesmo que é usado para o mapeamento de domínio para configurar o site e o blog atuais com base nos domínios personalizados. Você pode usá-lo para configurar seu próprio site e blog em vez de deixar o WordPress fazê-lo por você.

Exemplo rápido - isso funciona bem, mas provavelmente precisa de alguma melhoria.

 < ?php // sunrise.php $host = $_SERVER['HTTP_HOST']; if('wpmscustom.dev' == $host) { // switch the host. $host = 'wpms.dev'; } if(is_subdomain_install()) { $sql = $wpdb->prepare("SELECT * FROM {$wpdb->blogs} WHERE domain = %s LIMIT 1", $host); } else { // this probably needs some work. $path = explode('/', ltrim($_SERVER['REQUEST_URI'], '/')); if(count($path)) $path = '/' . $path[0]; else $path = '/'; $sql = $wpdb->prepare("SELECT * FROM {$wpdb->blogs} WHERE domain = %s AND path = %s LIMIT 1", $host, $path); } if($_blog = $wpdb->get_row($sql)) { $current_blog = $_blog; $blog_id = $_blog->blog_id; $site_id = $current_blog->site_id; // set current site $current_site = $wpdb->get_row( $wpdb->prepare("SELECT * from {$wpdb->site} WHERE id = %d", $site_id) ); $current_site->blog_id = $blog_id; $current_site = get_current_site_name($current_site); } 

Uma vez que o @kaiser provavelmente acariciará para dizer que $_SERVER['HTTP_HOST'] não é confiável, você pode querer garantir que seu servidor realmente tenha disponível.

Ou faça algo assim ...

 < ?php if(isset( $_SERVER['HTTP_HOST'])) { $host = $_SERVER['HTTP_HOST']; } elseif(isset($_SERVER['SERVER_NAME'])) { $host = $_SERVER['SERVER_NAME']; } 

Você pode soltar o sunrise.php acima em sua instalação local e colocar define('SUNRISE', true); no wp-config do seu local.

Não tenho certeza se isso responde sua pergunta, mas achei isso: http://wordpress.org/support/topic/multiple-domain-with-multisite