アイフォンSEは「position:fixed」した要素のz-indexが効かない
ワードプレスのテンプレートファイル。テンプレートファイルというのはarchive.phpとかtaxonomy.phpとか。
そしてこのarchive-○○.phpとtaxonomy-○○.phpで同じ一覧ページの見た目にしたい!というのが今回ぼくがやりたかったコトでした。
ということでここではワードプレスで同じデザインを異なるテンプレートファイルに対して有効にする方法を紹介したい。
両方書いてもいいけど…
ちょっと前置きなんですが、今回はカスタム投稿とカスタムタクソノミーの一覧ページの見た目をおんなじにしたかった、というのが目的でした。
んで「archive-○○.php」の方はカスタム投稿タイプの一覧ページのレイアウトのテンプレートファイル。○○の部分がカスタム投稿タイプのスラッグになります。
そして「taxonomy-○○.php」の方はカスタムタクソノミーの一覧ページのレイアウトのテンプレートファイル。こちらも○○の部分がカスタムタクソノミーのスラッグになります。
最悪この二つのテンプレートファイル両方におんなじphp(have_postsとかwhileとか)書けばいいんですが、それだとバグがあったときに両方治さなくちゃいけないからあんまりうれしくないんですよね。んでなによりスマートじゃない。
てことで「get_template_part()」を使います。
get_template_part()を使おう!
get_template_part()はワードプレスの関数でphpを読み込むときに使う関数。
というコトで「archive-○○.php」の方だけしっかりphpを作っておいて、もう片方の「taxonomy-○○.php」の中身は、
taxonomy-○○.php
<?php get_template_part('archive', '○○'); ?>
だけにしちゃう。
これでカスタム投稿タイプの一覧ページもカスタムタクソノミーの一覧ページもまったくおんなじレイアウトにできちゃいます。
もちろん逆でもOK。しっかりphp書くのをtaxonomy.phpの方にしといて、archive.phpの方でget_template_part()呼び出してもOK。
get_template_part()の書き方
もう上までで異なるテンプレートファイル間でおんなじレイアウトを読み込ませるのはできてるんですが、get_template_part()の書き方がちょっと特殊なんでそこだけサクッと紹介しておきますね。
…複雑といってもファイル名をただ引数分けて指定してるってだけなんですよね。
例①:single.phpを読み込むケース
<?php get_template_part('single'); ?>
例②:archive-member.phpを読み込むケース
<?php get_template_part('archive', 'member'); ?>
こんな感じ。テンプレートファイルの名前ってハイフンで区切られてて最初の部分が第一引数、んでハイフンの跡の部分が第二引数になるんですね。
例①のようにハイフンの後がなければ第二引数は省略します。
まとめ
今回はワードプレスで異なるテンプレートファイルで同じレイアウトを読み込む方法を紹介しました。
カスタム投稿タイプとカスタムタクソノミーの一覧ページのレイアウトってほとんどの場合おんなじ見た目にしたいハズ…だと思うんだけれどテンプレートファイルとしては分かれてるんですよね。
それぞれのテンプレートファイルに同じコードを書いてもいいけれど、バグ対応がしんどくなるのでget_template_part()を使って楽できるようにするのがおすすめです。
参考にしてみてくださいね。