Intereting Posts
Сохранение содержимого Metabox Как добавить тег привязки в верхней части сообщений, мимо заголовка и панели навигации? Отображать теги из определенной категории в выбранных полях Разделить сообщения WP_Query по дате и типу публикации Создание кнопок на странице архива для запуска функций при нажатии Могу ли я включить / отключить / скрыть плагины для каждого сайта на нескольких сайтах? Как отсортировать массив WP_Query по post_name после array_merge (); WordPress .htaccess переписать для настраиваемого шаблона Centos 7.2 wordpress при переходе в / admin показывает Запрещено У вас нет разрешения на доступ / wordpress / wp-admin / на этом сервере ajax drop down change second drop down data Загрузка внутренней страницы Как включить изображение в сообщение в блоге, чтобы оно отображалось в Facebook? Почему is_front_page и is_home всегда возвращает true для сообщений в WordPress? получить выход из функции вставки и т. д. в классе wpdb В какой базе данных используется страница поиска

Несколько доменных имен – одна установка WP (не-Multisite) – по умолчанию Каждое имя домена для категории Archive

Случай использования несколько прост – здесь идет:

  1. Пять человек используют одну установку WordPress, а не многопользовательскую
  2. Каждый человек блоги и помещает свои посты в свою собственную уникальную категорию
  3. У каждого человека есть собственное доменное имя
  4. Все имена домена указываются или припаркованы в одну папку установки WP
  5. В доменном имени каждого человека отображаются только сообщения из их категории, т.е.

    • http://blogger1.com вернет каталог категорий сообщений Blogger1,
    • http://blogger2.com вернет категорию архива сообщений Blogger2,
    • и т.п.
  6. Удобная индексация Google для каждого имени домена
  7. Предпочитаете переписывать решение, а не перенаправлять, но перенаправление приемлемо
  8. Аккаунт «master» мог бы публиковать или редактировать любые сообщения в блогерах через «основной» логин домена.
  9. Бонус – если это можно расширить до пользовательских типов сообщений

Окружающая среда

  1. Одна установка последней версии WP (не многопользовательская)
  2. Довольно постоянные
  3. Cpanel – настройка парковки домена
  4. Нет поддоменов
  5. Доступ к .htaccess
  6. Доступ к functions.php

Solutions Collecting From Web of "Несколько доменных имен – одна установка WP (не-Multisite) – по умолчанию Каждое имя домена для категории Archive"

Вот два разных решения (редактирование специфики вашего варианта использования) :

Выполнение перенаправления:

1.) В верхней части вашего /wp-config.php файла добавьте следующее:

 if ( is_yoursite_blogger_domain( $_SERVER['SERVER_NAME'] ) ) { $domain = str_replace( 'www.', '', $_SERVER['SERVER_NAME'] ); define( 'WP_SITEURL', 'http://' . $domain ); define( 'WP_HOME', 'http://' . $domain ); } else if ( ! is_main_domain( $_SERVER['SERVER_NAME'] ) ) { header( "Location:http://{$yoursite_main_domain}", true, 301 ); exit; } function is_main_domain( $domain ) { $domain = str_replace( 'www.', '', $_SERVER['SERVER_NAME'] ); return strpos( $domain, 'maindomain.com' ) !== false; } function is_yoursite_blogger_domain( $domain ) { $domain = str_replace( 'www.', '', $_SERVER['SERVER_NAME'] ); return in_array( $domain, array( 'blogger1.com', 'blogger2.com', 'blogger3.com', 'blogger4.com', 'blogger5.com', 'uncategorized.dev', // Only here for use on my own test site ) ); } 

2.) Затем добавьте это в файл functions.php вашей темы:

 add_action( 'template_redirect', 'yoursite_template_redirect' ); function yoursite_template_redirect() { $path = $_SERVER['REQUEST_URI']; if (strpos($path,"/category/") === false) { $domain = str_replace( 'www.', '', $_SERVER['SERVER_NAME'] ) ; $category = str_replace( '.com', '', $domain ); $category = str_replace( '.dev', '', $domain ); // Only for my own test site $location = "http://{$domain}/category/{$category}/" ; wp_safe_redirect( $location ); exit; } } } 

Вышеуказанное будет перенаправлять 302 на сайт http://blogger1.com/category/blogger1/ когда будет сделан запрос на любой URL http://blogger1.com отличный от того, который начинается с http://blogger1.com/category/ (вам необходимо внести некоторые изменения для поддержки других URL-адресов.)

Выполнение «Rewrite»:

То, что выше не поддерживает, – это «переписать» и «перенаправить» решение. Если вы хотите, то это немного сложнее. Следующий код приведет к загрузке страницы категории в корневой путь для любого домена, который отображается в вашей функции is_yoursite_blogger_domain() . Конечно, ваша is_yoursite_blogger_domain() может быть проверена по отношению к существующим категориям, но я не знаю полных критериев, поэтому я просто ее закодировал. Вы можете скопировать этот код в файл theme.php вашей функции или поместить в .php файл плагина, который вы можете писать. Обратите внимание: этот код также требует кода в файле /wp-config.php выше:

 add_action( 'category_link', 'yoursite_category_link', 11, 2 ); function yoursite_category_link( $category_link, $category_id ) { // Make sure any blogger category links are truncated to the root $parts = explode( '/', $category_link ); if ( is_yoursite_blogger_domain( $parts[2] ) ) { // if %category% in http://%domain%/category/%category%/ // equals %domain% minus the 'com' extension if ( "{$parts[4]}." == substr( $parts[2], 0, strlen( $parts[4] ) + 1 ) ) { $category_link = "http://{$parts[2]}/"; // Strip 'category/%category%/' } } return $category_link; } add_action( 'init', 'yoursite_init' ); function yoursite_init() { // Remove the canonical redirect to the category page // if %category% in http://%category%.%ext%/ is a blogger category. if ( is_yoursite_blogger_domain( $_SERVER['SERVER_NAME'] ) ) { $parts = explode( '/', strtolower( $_SERVER['REQUEST_URI'] ) ); if (count($parts) > 1) { $category_base = get_option( 'category_base' ); if ( empty( $category_base ) ) $category_base = 'category'; if ( $category_base == $parts[1] ) { remove_filter( 'template_redirect', 'redirect_canonical' ); } } } } add_action( 'template_redirect', 'yoursite_template_redirect' ); function yoursite_template_redirect() { // Redirect any http://%category%.%ext%/category/%category%/ to http://%category%.%ext%/ if ( is_yoursite_blogger_domain( $_SERVER['SERVER_NAME'] ) ) { $category_base = get_option('category_base'); if (empty($category_base)) $category_base = 'category'; $parts = explode( '/', strtolower( $_SERVER['REQUEST_URI'] ) ); if ( $category_base == $parts[1] && "{$parts[2]}." == substr( $_SERVER['SERVER_NAME'], 0, strlen( $parts[2] ) + 1 ) ) { wp_safe_redirect( "http://{$_SERVER['SERVER_NAME']}/", 301 ); exit; } } } add_action( 'request', 'yoursite_request' ); function yoursite_request($query_vars) { // If %category% in http://%category%.%ext%/ is a blogger category set the // 'category_name' query var to tell WordPress to display the category page. $domain = $_SERVER['SERVER_NAME']; if ( is_yoursite_blogger_domain( $domain ) ) { $path = $_SERVER['REQUEST_URI']; if ( strpos( $path, "/category/" ) === false ) { $domain = str_replace( 'www.', '', $domain ) ; $category_name = substr( $domain, 0, strrpos( $domain, '.' ) ); $query_vars = array( 'category_name' => $category_name ); } } return $query_vars; } 

И вот скриншот, чтобы показать второй пример в действии:

Снимок экрана сайта WordPress с помощью перехватчиков, чтобы страница категории отображалась в корне URL для выбранных категорий.

Другой, вероятно, лучший способ приблизиться к этому, – это использовать обычную таксономию вместо категорий или даже еще лучше сопоставить домен с именем пользователя. Таким образом, это меньше усилий для авторов, и вам не нужно беспокоиться о сохранении списка блоггеров в коде или в отдельном списке таксономии.

Что касается вас «бонус» , извините, но я не слежу за тем, что вы там хотите.

  1. Создайте псевдоним домена (ов)

  2. Добавьте это в свой файл wp-config:

     define('WP_SITEURL','http://'.$_SERVER['SERVER_NAME']); define('WP_HOME','http://'.$_SERVER['SERVER_NAME']); 
  3. Перейдите к своей теме и добавьте что-то вроде этого, чтобы загрузить основной контент (используемый для одного пейджера):

     $home=get_page_by_path(substr($_SERVER['SERVER_NAME'], 0, strlen($_SERVER['SERVER_NAME'])-4)); echo do_shortcode($home->post_content); 
  4. измените категорию, страницу или сообщение на доменное имя min до верхнего уровня домена, в этом случае домен верхнего уровня только с 4 символами. Например: .com .net .org, если вы хотите использовать что-то вроде .nl .be или .de, вы должны изменить 4 на 3. Если вы хотите использовать оба, чем добавлять условия.

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