Перенаправити головний сайт на підписку на багатосайтове Wordpress


11

У мене є багатосайтний wordpress, я хочу перенаправити головний сайт на один із під-сайтів, але перенаправлення в .htacecss дає помилку. Чи є спосіб перенаправити основний сайт на його під-сайт. Це виглядає неможливо, але я не експерт із Wordpress, тому просто перевіряю.

Переспрямування має бути таким

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

Або якщо є якийсь інший спосіб зробити це?

Відповіді:


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' );
?>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.