【WordPress】single.phpの内容をカテゴリー別で変える方法!

(この記事は2022年2月25日に投稿されました。)

「メニューの紹介する記事とブログの記事のフォーマットを別々にしたい」
「投稿記事で投稿すると全てブログのような記事になって変になってしまう。」

サイトのコンテンツを大きくしようと思ったけど、上記のように思ってしまい困ったことはありませんか?

WordPressでは所属しているカテゴリーによって投稿ページの内容を変更することができます。

しかし、テーマのコードを修正したり、PHPファイルをサーバーに追加する必要があるので注意が必要です。

少し難しく感じるかと思いますが、投稿ページの内容ができるようになるとブログだけのサイトに自分が作った商品を紹介するコーナーを設けることができたりなど

サイトのコンテンツを大きくすることができます。

つまり、投稿記事のフォーマットを変えることで、サイトの可能性は無限に広がりますので、サイトのコンテンツを大きくしようと思っている方は是非試してみてください!

今回はWordPressで投稿ページ(single.php)の内容をカテゴリー別で変える方法について紹介していきます。

この記事はこんな方におすすめ
⚫︎ カテゴリーによって記事のフォーマットを変えたい人
⚫︎ サイトのコンテンツを大きくしたい人




投稿ページ(single.php)の表示内容をカテゴリー別で変える方法

投稿ページ(single.php)でカテゴリー別で表示内容を変える方法は下記の手順になります。

1
記事が取得しているカテゴリーを条件にPHPの条件処理を行う
if文かswitch文を使って取得しているカテゴリーを条件に分岐を行う。
2
条件分岐した後に特定のPHPファイルを読み込ませる
PHPのinclude()関数を使用して指定したPHPファイルを読み込ませる。

まずは、記事が取得しているカテゴリーを条件として条件処理を行っていきます。

条件処理はPHPのif文switch文になります。

そして、取得しているカテゴリーによって読み込むファイルを制御します。

読み込む場合はPHPのinclude()関数を使用します。

また、下記のようなイメージとなります。

WordPressのsingle.phpの内容をカテゴリー別で変えるイメージ

カテゴリーによってsingle.phpで表示するPHPファイルを差し替えるイメージとなります。

Sossy

投稿記事を表示する際に、WordPressではカテゴリーやタグを取得するプログラムが走っています。
そのため、投稿ページに「どのカテゴリーを取得したのか、カテゴリーを取得するとどのような処理が行われるのか」を追記することで投稿ページの表示内容をカテゴリー別で変えることが可能になります。

実際にカテゴリー別で投稿ページの内容を変えてみた

実際に投稿ページ(single.php)の内容をカテゴリーで変えてみます。

しかし、今回はカテゴリーとPHPファイルを先に作成しておく必要があります。

カテゴリーは「A」と「B」を作成しておきます。

そして、「single-A.php」と「single-B.php」のPHPファイルを作成し、自分のサーバーに追加しておきましょう。

もし、WordPressのテーマにPHPファイルを追加する方法について知りたい方は、下記の記事をご参考ください。

if文で投稿ページの内容をカテゴリー別で変えた場合

まずはif文を使用して投稿ページの内容をカテゴリー別で変えてみます。

下記のようにコードを記述してみます。

⚫︎ single-A.php

⚫︎ single-B.php

⚫︎ single.php

⚫︎ 実行結果(カテゴリーが「A」の場合)

WordPressのsingle.phpにif文を使用してみた結果1

⚫︎ 実行結果(カテゴリーが「B」の場合)

WordPressのsingle.phpにif文を使用してみた結果2

if文により、カテゴリーによって記事の内容が異なっています。

つまり、条件分岐が行われ、取得したカテゴリーによって表示しているPHPファイルが異なっていることがわかります。

switch文で投稿ページの内容をカテゴリー別で変えた場合

次はswitch文を使用して投稿ページの内容をカテゴリー別で変えてみます。

下記のようにコードを記述してみます。

⚫︎ single-A.php

⚫︎ single-B.php

⚫︎ single.php

⚫︎ 実行結果(カテゴリーが「A」の場合)

WordPressのsingle.phpにswitch文を使用してみた結果1

⚫︎ 実行結果(カテゴリーが「B」の場合)

WordPressのsingle.phpにswitch文を使用してみた結果2

switch文により、カテゴリーによって記事の内容が異なっています。

つまり、こちらの方法でも条件分岐が行われ、取得したカテゴリーによって表示しているPHPファイルが異なっていることがわかります。

Sossy

カテゴリーに所属している記事によって記事の内容が切り替わっていますね。
そのため、switch文を使用することでもsingle.phpの内容を切り替えることができます。

投稿ページの内容をカテゴリー別に変える方法をサイトに使用してみた

実際にスポーツの一覧サイトに使用して、カテゴリー別に投稿ページの内容を変えてみます。

今回はカテゴリーを「スポーツ」と「ブログ」の2つに分け、投稿ページの内容を変えてみました。

すると、「スポーツの概要を紹介するページ」と「ブログのページ」の2通りのフォーマットを作成することができます。

こちらでもif文とswitch文を使ってカテゴリー別に投稿ページの内容を変えてみます。

そのため、先に「single-sports.php」と「single-blog.php」のPHPファイルを作成し、自分のサーバーに追加しておきます。

Sossy

これから紹介する、「single-sports.php」では項目が決まっているのでカスタムフィールドを使用しています。
そのため、コピペをしても自分のサイトでは表示されませんので注意してください。

if文の場合

まずは、if文を使用して「スポーツ」と「ブログ」の2つに分け、投稿ページの内容を変えてみます。

⚫︎ single-sports.php

⚫︎ single-blog.php

⚫︎ single.php

⚫︎ 実行結果(カテゴリーがスポーツの場合)

スポーツ紹介のサイトで「スポーツ」のカテゴリーを取得した記事のページ(if文)

⚫︎ 実行結果(カテゴリーがBlogの場合)

スポーツ紹介のサイトで「ブログ」のカテゴリーを取得した記事のページ(if文)

if文により、ブログのカテゴリー内にある記事とスポーツのカテゴリーにある記事の内容が異なっています。

switch文の場合

続いて、switch文を使用して「スポーツ」と「ブログ」の2つに分け、投稿ページの内容を変えてみます。

⚫︎ single-sports.php

⚫︎ single-blog.php

⚫︎ single.php

⚫︎ 実行結果(カテゴリーがスポーツの場合)

スポーツ紹介のサイトで「スポーツ」のカテゴリーを取得した記事のページ(switch文)

⚫︎ 実行結果(カテゴリーがBlogの場合)

スポーツ紹介のサイトで「ブログ」のカテゴリーを取得した記事のページ(switch文)

switch文により、ブログのカテゴリー内にある記事とスポーツのカテゴリーにある記事の内容が異なっています。

get_template_part()でPHPファイルを読み込むことも可能

先ほどのまではinclude()を使ってPHPファイルを読み込んでいましたが、get_template_part()でもPHPファイルを読み込むことが可能です。

get_template_part()とはテーマ内にあるテンプレートファイルを読み込んでくれるWordPress関数となります。

つまり、include()の代わりにget_template_part()を使用することでもsingle.phpの内容をカテゴリー別で変えることが可能になります。

そのため、「single-sports.php」と「single-blog.php」は前回のままで、「single.php」だけコードを変更します。

⚫︎ single.php

⚫︎ 実行結果(カテゴリーがスポーツの場合)

get_template_part()を使用してsingle.phpの内容をカテゴリー別で変えた場合(sports)

⚫︎ 実行結果(カテゴリーがBlogの場合)

get_template_part()を使用してsingle.phpの内容をカテゴリー別で変えた場合(blog)

get_template_part()により、カテゴリーがblogの場合は「single-blog.php」が、カテゴリーがsports場合は「single-sports.php」が読み込まれています。

Sossy

get_template_part()はinclude()と違って、指定する引数が異なりますので注意してください。

まとめ

⚫︎ 投稿ページ(single.php)でカテゴリー別で表示内容を変える方法は下記の手順になる
・記事が取得しているカテゴリーを条件にPHPの条件処理を行う
・条件分岐した後に特定のPHPファイルを読み込ませる

⚫︎ PHPの条件処理はif文やswitch文を使用する

⚫︎ PHPファイルを読み込むにはinclude()関数を使用する
(get_template_part()を使用してPHPファイルを読み込むことも可能)

コメントを残す

メールアドレスが公開されることはありません。