Для одного из сайтов на WordPress потребовалось создать лендинг на поддомене. Лендинг представляет из себя страницу на том же WP-сайте с отдельным шаблоном. Как ни странно, работающих и, желательно, бесплатных плагинов выполняющих такую функцию найти не удалось. Но после некоторого копания, обнаружились 2 способа решения.
Способ первый
- Поддомен в виде алиаса должен быть прицеплен к корневой папке (решается через панель управления вашим хостингом, либо обращением в его техподдержку). Проверьте, что при обращении к субдомену открывается главная страница вашего сайта.
- Создаем страницу с постоянной ссылкой (slug) соответсвующей имени вашего поддомена.
- Добавляем код в файл functions.php вашей темы WordPress:
<?php
function hijack_page() {
// делим URL и проверяем, является ли первая часть поддоменом.
$pieces = explode( '.', $_SERVER['HTTP_HOST'] );
$subdomain = array_shift( $pieces ); // получаем первую часть разделенного URL
// получаем адрес страницы после домена
$pieces = explode('/', $_SERVER['REQUEST_URI']);
array_shift($pieces);
$slug1 = array_shift($pieces); // получаем первую часть окончания URI страницы
// Проверяем, существует ли страница и отличается ли поддомен от "www"
if($slug1 && $subdomain != "www"){
// получаем основные переменные запроса WP query для получение содержимого страницы
global $query_string;
// выполняем запрос the query posts чтобы получить желаемую страницу
query_posts($query_string.'&pagename='.$subdomain.'/'.$slug1);
return;
}
}
hijack_page();
?>
По аналогии, можно привязать поддомен к чему кгодно (категории, метке и т. д.). Нужно только подкорректировать запрос query_posts.
Способ второй
- Создаем папки с нужными нам поддоменами в корневой директории и привязываем алиасы к ним. При обращении к поддомену должна открываться эта созданная папка.
- Внутри папки создаем файл index.php со следующим содержимым:
<?php
$_GET['page_id']=XXX; //XXX — ID вашей страницы
require('../wp-blog-header.php');
?>
Второй вариант явно хуже, но пусть тоже побудет тут.