ワードプレスをカスタマイズしていると「特定の投稿は通常の投稿で作らずに、カスタム投稿で区別したいんだよね〜」と思うこともあります。
例えば・・・日記は通常の投稿で行い、自分の読んだおすすめの本を紹介するのはカスタム投稿「books」で行う、みたいな。
カスタム投稿の投稿ページをカスタマイズしたいとき、どうする
ここからが本題です。
カスタム投稿「books」で作った投稿ページは、通常の投稿と同じ見せ方ではなく、タイトルの位置やアイキャッチの配置など、オリジナルな内容にしたいこともあるはずです。・・・何というか、投稿ページ別にオリジナル性をもたせるために、カスタム投稿を作る選択をしている人も多いはず。
「子テーマを作ることを前提」としたカスタマイズはあるけど・・・
カスタム投稿の投稿ページをオリジナルなものにしたい場合、テンプレートファイル「single-{post-type}.php」を作って子テーマ内に入れておけば OK です(「なんでそんなファイル名なの?」と疑問の方は テンプレート階層のページ を参考ください)。
なので、投稿タイプ「books」の場合、テンプレートファイル「single-books.php」を作り、子テーマ内に入れておけば OK ですね。
この「子テーマを作ることが前提」のカスタマイズは、割と知られている方法です。
「子テーマを作らずにカスタマイズする方法」を紹介します
実は、子テーマを作って運用し続けるのって、親テーマの変更に追従し続けなければいけないデメリットがけっこう大きいので、最近は子テーマは極力作らないほうが運用・管理しやすいという考えを僕は推しています。
というわけで、今回はプラグインで適用する方法をおすすめします。
サンプルコード
カスタム投稿「books」は作成済みとします(カスタム投稿の作り方はこちら)。
重要なところはコメントを書いてます。
// カスタム投稿「books」の投稿ページ用のテンプレートを適用
if ( ! function_exists( 'custom_post_single_template' ) ) {
function custom_post_single_template( $template ) {
// books の投稿タイプの場合
if ( is_singular( 'books' ) ) {
// 読み込むテンプレートファイルのパスを指定する。「プラグインフォルダ/templates」内にファイルを配置
$file_path = plugin_dir_path( __FILE__ ) . 'templates/single-books.php';
// ファイルが存在していたらテンプレートとして適用
if ( file_exists( $file_path ) ) {
return $file_path;
}
}
return $template;
}
// single_template フィルターを使う
add_filter( 'single_template', 'custom_post_single_template', 10, 1 );
}
おまけ:子テーマを作っていいときって、どんなとき?
ここを書き出すととても長くなってしまうんでちょっとだけ・・・今回紹介したカスタマイズ以外にも、何らかのカスタマイズをするとき「子テーマを作ること」を検討する場合もあると思います。
もし現在、そのような検討段階にいるようでしたら、子テーマを作ってもよいかどうかを一度考えてみてください。
例えば「更新頻度が少なめ(セキュリティアップデートなど、必要最小限なもの)」だったり「仮に更新頻度が頻繁でも、後方互換性があり、破壊的変更が行われにくい」親テーマを選んでいるならば、子テーマを作るのもアリかもしれません。
あとは「親テーマにどんな変更があっても、追従していく技術力と時間はあるよ!」という方もアリといえばアリですかね・・・
僕も開発者の一人として、なるべく利用しやすいような作り方を心がけてはいます。が・・・ワードプレス本体側の変更は随時行われているわけで、内容によっては、やむを得ずテーマ側に大きな変更を加えることも可能性としてはあります(こういうことを正直にいう開発者は少ないかもですが、他のテーマにも当てはまることです)。
これまで数多くのウェブサイトをワードプレスで作って運用してきましたが、子テーマを作るのは最終手段にしておき、何かカスタマイズをしたい場合は「プラグイン化」をまずは検討していきましょう。
WordPress テーマ Nishiki Pro
「ウェブサイト運営に本当に必要とされる機能」をテーマ内にまとめて搭載したワードプレステーマです。
ブロックエディター機能を強化し、これまでのワードプレスでは難しかったコンテンツが簡単に作れます。
ブログ、ポートフォリオ、コーポレートサイト、ビジネスサイト、オンラインショップなど、様々な目的のウェブサイトに対応できるテーマです。
最新情報をチェック!
Nishiki / Nishiki Pro テーマに特化した情報を「にしきちゃん」がお伝えします😀
- リリース情報
- 新機能の紹介
- 便利な使い方
- 開発中の機能紹介
- 導入事例
- あるある日常ネタ
など