私的記録です。
WordPressで、サイトの「お知らせ」というカスタム投稿タイプを作成した時のこと。
たとえば他のサイトからインラインフレームで読み込ませるときは、特定のテンプレートに変更したい、という場合、template_includeというフィルターが使える。トリガーとして、URLパラメータになにがしらのパラメータを渡したときに切り替えるようにすれば上手くいきます。
また、ある特定のURLパラメータをつけてアクセスしたときは、別のテーマで表示したい! という、それって何の意味があるの?的なこともしたかったので、纏めてプラグインにした。
チョー簡単(^^; WordPressってホントよく出来てますね~。
<?php /* Plugin Name: Switcher for Theme or Template */ /************************************************************ 動的にテーマやテンプレートを変える すっごい手抜きサンプル ************************************************************/ add_filter('template_include','DynaChange::Template'); add_filter('stylesheet', 'DynaChange::Theme'); add_filter('template', 'DynaChange::Theme'); class DynaChange { public static function Template($template) { //URLパラメータにchtmp=プレフィックス があれば、 //現在のテンプレートファイル名にプレフィックスを付けた //テンプレートファイルに切り替える。 //適当サンプルのため、子テーマには対応していない。 if(!empty($_GET['chtmp'])) { $name = str_replace(STYLESHEETPATH . '/', '', $template); $template = STYLESHEETPATH . '/' . $_GET['chtmp'] .'-'. $name; } return $template; } public static function Theme($stylesheet) { //URLパラメータに chth=テーマ名 があれば、 //そのテーマに切り替える。 if(!empty($_GET['chth'])) { $theme = wp_get_theme($_GET['chth']); if($theme->exists()) $stylesheet = $theme->Template; } return $stylesheet; } } ?>
説明要らないっすね~。