アクセス先でテーマを切り替えるには
WordPressにアクセスするときに、http://example/xxx/と指定することによりxxxで指定したテーマで表示できるようにしたいと思います。
まず、URLについてですが、通常はサイトアドレス(URL)に指定したアドレスしか表示することが出来ませんでした。そこで、アクセス時にリクエストされたURLを調べて、サイトアドレスを書き換えてしまいます。編集するファイルは、wp-config.phpです。
switch(substr($_SERVER[“REQUEST_URI”],0,4)){
case ‘/xx/’:
define(‘WP_HOME’,’https://’ . $_SERVER[“HTTP_HOST”] . ‘/xx’);
break;
case ‘/yy/’:
define(‘WP_HOME’,’https://’ . $_SERVER[“HTTP_HOST”] . ‘/yy’);
break;
}
こんな感じで、適当に2文字のサフィックスで対応することにしました。想定外のアクセスは通常サイトに飛ばすことにします。ポイントはWP_HOMEの方を書き換えることです。あとは、サイトのホームページとして WordPress のインストールディレクトリとは異なる場所を設定する場合に書いてある通り、サブディレクトリを作り、index.phpを修正します。
続いて、テーマの切り替え部分を作ることにします。プラグインを作ってしまうのがオススメらしいので、wp-content/plugins/フォルダの中に、my_theme_change.phpを作成し、以下の内容を記載します。caseの内容はwp-config.phpで作成した内容を、テーマ名はwp-content/themes/フォルダ内にあるテーマのフォルダ名を指定します。
function my_theme_change($template) {
switch(substr(home_url(),-3)){
case ‘/xx’:
return ‘テーマ名1’;
case ‘/yy’:
return ‘テーマ名2’;
}
return $template;
}
add_filter(‘stylesheet’, ‘my_theme_change’);
?>
これで、アドレスの最後にxxやyyを付け加えることで、お好みのテーマで表示することができます。
って、書いてありましたが。本当ですか?
サイドパネルにウィジェットが表示されないのですが...。あと、メニューも表示されません。どうやら、有効かしているテーマしかサイドパネルなどの設定が読み込めない様な感じです。色々調べてみましたが、わかりませんでした。ほかの人はサイドパネルやメニューを使用していないのでしょうか。方法が分かればなんとかしたいところです。