Przekieruj główną stronę do podstrony w Multisite Wordpress

11

Mam wordpress dla wielu witryn, chcę przekierować główną stronę do jednej z podstron, ale przekierowanie w .htacecss powoduje błąd. Czy jest jakiś sposób na przekierowanie głównej witryny do jej podstrony. To nie wygląda na możliwe, ale nie jestem ekspertem od wordpress, więc tylko weryfikuję.

Przekierowanie powinno być jak

przekieruj 301 www.example.com/main-site www.example.com/main-site/sub-site

A może jest jakiś inny sposób?

Toqeer
źródło

Odpowiedzi:

10

Aby to zrobić, możesz użyć parse_requestakcji. Po prostu włącz tę wtyczkę na swoim głównym blogu. Umieść następujący kod w pliku .php i prześlij go do katalogu wtyczek.

/*
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;
    }
}

Daj mi znać, jeśli masz jakieś pytania.

Brian Fegter
źródło
1
@Toqeer Powinieneś przyznać nagrodę. Nie odzyskam tego z powrotem. ;)
kaiser
Właśnie przyznane, myślałem, że zostanie automatycznie przyznane :)
Toqeer
Próbowałem teraz z najnowszą wersją WordPress, ale nie działa. Masz jakiś pomysł?
Użytkownik
1
Znalazłem rozwiązanie tego problemu, zamiast sprawdzania żądania $ wp->, po prostu sprawdź za pomocą funkcji is_main_site ();
Maor Barazany
3

Wygląda na to, $wp->requestże zasugerowany w powyższej odpowiedzi jest zawsze pusty ciąg (w WPMS 4.5.2), więc zamiast tego możesz to sprawdzić is_main_site();.

Maor Barazany
źródło
2

Akceptowana odpowiedź nie działa dla Wordpress 4.9.8. Oto zaktualizowany i przetestowany kod. Umieść to wewnątrz function.php aktywnego motywu.

<?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
źródło