わかりました、あなたの質問はかなり良いものであり、サイトを更新することを決定したときに同じプロセスを経ている人が少なくないので、フックget_stylesheet
とget_template
フィルター フックを試してみることにしました。非常に小さなプラグインを使用すると、特定のルールに従って特定のテーマ (この場合はログインしているすべての訪問者ですが、これを変更して必要なロジックを使用することができます) を簡単に適用できることがわかります。
plugins ディレクトリのファイルに入れる必要があるコードは次のとおりです。
<?php
/*
Plugin Name: Switch Theme
Description: Switches the theme for logged-in visitors, while keeping the current theme for everyone else. !!!NOTE!!! Please back-up your database prior using this plugin - I can't guarantee that it will work with any theme, nor that it won't break your site's set-up - USE AT YOUR OWN RISK(I did a quick test and it seemed to be fine, but haven't done extensive testing).
You don't need to switch to the desired theme before that - you want to keep active the theme that you will display to your visitors - the one that you will see will be used programatically.
Before activating the plugin, change the line that says `private $admin_theme = '';` to `private $admin_theme = 'theme-directory-name';` where "theme-directory-name" is obviously the name of the directory in which the desired theme resides in.
*/
class MyThemeSwitcher {
private $admin_theme = '';
function MyThemeSwitcher() {
add_filter( 'stylesheet', array( &$this, 'get_stylesheet' ) );
add_filter( 'template', array( &$this, 'get_template' ) );
}
function get_stylesheet($stylesheet = '') {
if ( is_user_logged_in() && $this->admin_theme ) {
return $this->admin_theme;
}
return $stylesheet;
}
function get_template( $template ) {
if ( is_user_logged_in() && $this->admin_theme ) {
return $this->admin_theme;
}
return $template;
}
}
$theme_switcher = new MyThemeSwitcher();
だから - まず第一にデータベースをバックアップしてください!Twenty Eleven をデフォルト テーマとして、基本的なフレームワーク テーマをカスタム テーマとしてローカルでテストしました。テーマ オプションとナビゲーション メニューは適切に保存されました。
あとは、ファイルを更新するだけです (使用するテーマがあるディレクトリの名前がprivate $admin_theme = '';
whereprivate $admin_theme = 'theme-slug';
にあるという行を変更します)。theme-slug
また、ライブ サイトに影響を与えずにFront page
とPosts page
オプションを変更することも、両方のテーマが使用する共有コンポーネント (サイト名、フロント ページ、投稿ページ、ページごとの投稿、オプション、コンテンツなど)。
したがって、この解決策が自分に適しているかどうかわからない場合は、場合によって異なります。
両方のテーマが比較的複雑でない場合は、おそらくこのハックを使用できるはずです。他の人が提案したように、ウェブサイトの2番目のインストールを行う必要があるかもしれませんが、サブドメインまたはサブディレクトリへの2番目のインストールが最適なオプションだと思います(単にマルチサイトデータベースの移動が通常の WP データベースの移動よりも複雑です)。