web-dev-qa-db-ja.com

マルチサイトWordpressでメインサイトをサブサイトにリダイレクトする

マルチサイトのワードプレスを使用しています。メインサイトをサブサイトの1つにリダイレクトしたいのですが、.htacecssでリダイレクトするとエラーになります。メインサイトをそのサブサイトにリダイレクトする方法はありますか。それは不可能に見えますが、私はワードプレスのエキスパートではないので、検証しているだけです。

リダイレクトは次のようになります。

リダイレクト301 www.example.com/main-site www.example.com/main-site/sub-site

それとも他に方法がありますか。

11
Toqeer

これを実現するために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;
    }
}

質問があれば教えてください。

10
Brian Fegter

上記の返信で提案されている$wp->requestは常に空の文字列(WPMS 4.5.2)であるように思われるので、代わりにこれをis_main_site();に対してチェックすることができます。

3
Maor Barazany

受け入れられた答えは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' );
?>
2
sharulhafiz