Перенаправить основной сайт на сайт в многосайтовом Wordpress

11

У меня есть многосайтовый WordPress, я хочу перенаправить основной сайт на один из сайтов, но перенаправление в .htacecss дает ошибку. Есть ли способ перенаправить основной сайт на его под-сайт. Это выглядит невозможно, но я не эксперт по WordPress, поэтому просто проверяю.

Перенаправление должно быть как

перенаправление 301 www.example.com/main-site www.example.com/main-site/sub-site

Или есть ли другой способ сделать это?

Toqeer
источник

Ответы:

10

Вы можете использовать это parse_requestдействие для достижения этой цели. Просто включите этот плагин в своем основном блоге. Поместите следующий код в файл .php и загрузите его в каталог плагинов.

/*
Plugin Name: Redirect Main Site To Sub-Site
Description: Redirect 'main-site' to 'main-site/sub-site/'
Version: 0.1
Author: WPSE
Author URI: http://wordpress.stackexchange.com
License: GPL2
*/

add_action('parse_request', 'redirect_to_sub_site');
function redirect_to_sub_site(){
    global $wp;

    #Sniff requests for a specific slug
    if('main-site' === $wp->request){

        #The URL to redirect TO
        $url = 'http://www.example.com/main-site/sub-site/';

        #Let WordPress handle the redirect - the second parameter is obviously the status
        wp_redirect($url, 301);

        #It's important to exit, otherwise wp_redirect won't work properly
        exit;
    }
}

Дайте знать, если у вас появятся вопросы.

Брайан Фегтер
источник
1
@Toqeer Вы должны присуждать награду. Не верну его назад. ;)
Кайзер
Только что награжденный, я думал, что он будет автоматически награжден :)
Toqeer
Я попробовал сейчас с последней версией WordPress, но она не работает. Есть ли у вас какие-либо идеи?
Пользователь
1
Я нашел решение для этого, вместо проверки запроса $ wp->, просто проверьте с помощью функции is_main_site ();
Маор Баразаны
3

Похоже, $wp->requestчто предложенный в ответе выше всегда пустая строка (в WPMS 4.5.2), так что вместо этого вы можете проверить это is_main_site();.

Маор Баразаны
источник
2

Принятый ответ не работает для Wordpress 4.9.8. Вот обновленный и проверенный код. Поместите это в function.php активной темы.

<?php
function wpse66115_redirect_to_sub_site() {
  if ( is_main_site() ) {
    exit( wp_redirect( 'http://www.example.com/main-site/sub-site/', 301 ) );
  }
}
add_action( 'parse_request', 'wpse66115_redirect_to_sub_site' );
?>
sharulhafiz
источник