Для одного из сайтов на 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'); ?>
Второй вариант явно хуже, но пусть тоже побудет тут.