この実装、面倒なら代行します
WordPressにおいて、ページ表示用のテンプレートを用意する方法は様々です。
WordPress本体サイトにもありますが、引用させていただきますと
このような優先順位でテンプレートが選択されます。
つまりこれらのどれかを使ってテンプレートを用意するのが一般的です。
今回はこれに加えて、ページのスラッグを能動的に取得して、そのスラッグに応じて表示するテンプレートを変える方法のご紹介をします。
まず、テーマフォルダ直下に”inc”フォルダを作成し、そこに”temp-{slug}.php”というファイルを作成、そこに表示テンプレートの内容を記述します。
次に page.php に以下のように記述します。
<?php $slug_name = $post->post_name; include locate_template( 'inc/temp-'.$slug_name.'.php' );
以上です。
以前、「自作のテンプレートパーツをインクルードする」方法をご紹介し、そのときは、get_template_part関数を使ってテンプレートを呼び出していましたが、今回は
“include locate_template”
を使ってます。
大きな違いは、get_template_part関数は引数を渡すことができませんが、”include locate_template”ならただのincludeなので、元ファイルの変数はそのまま先ファイルに引き継がれる点です。
このように、用途によって関数などもうまく使い分けてみてください。
この方法、マルチサイトWordPressを利用している場合などは、これの応用でテンプレートを変えることができます。
他ブログのスラッグを条件にして、本ブログのページを生成する、という一見マニアックですが、多店舗運営企業などでマルチサイトWordPressでサイトを運営する場合などには使える方法です。
page.php に以下のように記述します。
$url = $_SERVER["REQUEST_URI"]; include locate_template( 'inc/temp-'.$url.'.php' );
switch_to_blog関数を使ってブログを切り替えようとするとそれは面倒だし少し処理がかかるので、なまのURIを取得して処理を振り分けてしまおう、ということです。
WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!
100ウェブで手がけた制作・開発案件を一部、ご紹介。
クライアントからご相談いただいた内容とその実装におけるポイント、工期、予算について確認いただけます。
【テレワーク実施中 につきお電話転送中】
コール中1秒程度無音状態になりますがそのままお待ちください。
受付時間
平日 10:00~18:00
メールでのお問い合わせでも
1営業日以内にご連絡いたします。