Intereting Posts
Петля для пользовательских типов сообщений, отфильтрованных по таксономии Как вывести список должностей в категории, за исключением сообщений в подкатегориях категории Форсировать форму поиска, чтобы перейти на чистый URL-адрес без нескольких переадресаций Как применить пользовательский скин к WP_Editor / TinyMCE? Связь между настраиваемыми типами сообщений, как если бы они были таксономиями? Какой метод действия я должен использовать для перехвата формы при представлении? Настройки галереи – это основная функция. Как мы можем их настроить? Добавить кнопку для переключения кухонной раковины is_page_template возвращает false Как я могу указать позицию элемента панели администратора, добавленную с помощью $ wp_admin_bar-> add_menu () или add_node ()? визуально сортировать порядок «пользовательских типов сообщений» для конечных пользователей Не гиперссылки на заголовок меню Почему мои функции.php вызывают проблемы с белым экраном и медиабиблиотекой? WordPress 3.5 Media Manager – изменение порядка элементов выбора на вкладке Media Library Как изменить сопутствующие продукты image thumbnail Woocommerce?

Есть ли способ определить 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