コンテンツの条件によってテーマを差し替える。
- 2024.01.10
- WordPress
要件はサイトの一部のページでデザインを変えたいとのこと
一部のページによって、やり方はいろいろとあると思う。
また、変更となる部分によっても、やり方は異なる。
背景色が違うとか配色が違うだけなら、読み込むCSSを切り替えればいい。
パラメータは、is_singleとか、is_archiveとか、is_post_typeとか、WordPressに用意されている関数で条件分岐できるなら、それを使えばいい。
もし、CSSだけで対応できずに、HTML要素も変更しないといけないなら、それ用のテンプレートを作ればいい。
任意の固定ページのみ、だったら ページ専用のテンプレート
任意のアーカイブなら、それ専用のテンプレート
のように、WordPressのテンプレート階層のルールを使えば、それ専用のテンプレートは作れる。
次のような場合はどうだろう?
1つのWordPressの中に、目的の違うサイトが2つあるような場合。今回の要件はこのような感じだった。一部のページやアーカイブだけのデザインを変えるというより、2つサイトがあるということ。
普通に考えるなら、マルチサイトを使えばよい。
テーマを切り替える
is_singleとかis_archiveとかは、$wp_queryがセットされないと機能しない。
テーマの切り替え判断をするのは、$wp_queryがセットされるよりも前。
なので、is_singleとかis_archiveとかのis_系関数や、get_post_typeとかは使えない。
なので、URIで判断することになる。
そして、そのコードをthemeのfunctions.phpに書いてはダメだ。もし、切り替え対象の全てのthemeのfunctions.phpに書かないといけない。
それは、面倒だからプラグインを作ってそこに書く。URIを取得して条件分岐するので、以下のようなコードになる。
<?php
/*
Plugin Name:My Plugin
*/
if ( str_starts_with($_SERVER["REQUEST_URI"],"/category/") ) {
switch_theme( '', 'twentytwentytwo' );
} else {
switch_theme( '', 'lionblog' );
}
?>
-
前の記事
WordPressプラグインのPostieのカスタマイズ 2023.12.21
-
次の記事
記事がありません