Intereting Posts
Ger сообщения из похожих тегов и категорий Как сохранить несколько метаболитов? как сбросить пароль с помощью otp Дополнительные поля пользовательского почтового типа – как обращаться? Проблемы, связанные с таблицами стилей родительской и дочерней темы с пересмотренным методом Codex Сообщения не отображаются на главной странице Вставить массив в базу данных плагинов WordPress и "довольно постоянная ссылка" Необходимо скрыть элемент в зависимости от даты и должности категории Как я могу отображать div ТОЛЬКО, если это не определенная страница термина почему я должен использовать требуемые параметры? @media в bluehost закомментирован Добавить параметр URL во все внутренние ссылки, используя определенную тему Первый идентификатор не будет исключен из wp_dropdown_pages с помощью $ arg из tax_query Прокрутка страниц с помощью специального шаблона

Есть ли способ определить wp_blogs домены в wp-config?

В моей многоуровневой установке у меня есть несколько сред, в которых я хочу использовать одну и ту же базу данных, но использовать разные домены.

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

… каждый из них будет указывать на одну и ту же базу данных. Это отлично работает в стандартной WP-установке, используя define( 'WP_HOME', 'http://server1.example.com' ); и define( 'WP_SITEURL', 'http://server1.example.com' ); ,

Когда вы добавляете multisite в микс, он ломается.

Проблема в том, что таблица wp_blogs определяет домены, поэтому мне нужно определить их в файле конфигурации. Есть ли способ сделать это?

Solutions Collecting From Web of "Есть ли способ определить wp_blogs домены в wp-config?"

Когда WordPress загружает многоуровневые, он включает в себя соответствующие MS-файлы в wp-settings.php

Соответствующие строки:

 <?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 выполняет аналогичную задачу, так как wp-settings.php : загружает многоузловую среду и – что более важно для наших целей – устанавливает текущий сайт (сборник блогов) и блог. Но есть и эти несколько драгоценных камней:

 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 } 

Самое главное: if(defined('SUNRISE')) . Это позволяет отбросить файл sunrise.php каталог wp-content . Он включается, если вы define('SUNRISE', true); в вашем wp-config.php . Этот файл является тем же, который используется для сопоставления доменов для настройки текущего сайта и блога на основе пользовательских доменов. Вы можете использовать его, чтобы настроить свой собственный сайт и блог, а не позволить WordPress делать это за вас.

Быстрый пример – это работает нормально, но, вероятно, нуждается в некотором улучшении.

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

Так как @kaiser , скорее всего, перезвонит, чтобы сказать, что $_SERVER['HTTP_HOST'] ненадежен, вы можете убедиться, что ваш сервер действительно доступен.

Или сделай что-нибудь подобное …

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

Вы можете удалить вышеупомянутый sunrise.php в свою локальную установку и установить define('SUNRISE', true); в локальную wp-config.

Не уверен, что это отвечает на ваш вопрос, но я нашел это: http://wordpress.org/support/topic/multiple-domain-with-multisite