今、ブログを始めようとしている方、
今なら、ConoHaサーバーの「WINGパックプラン」が最大55%OFF!
「1,452円/月」が「643 円/月」の「低コスト」で始められるチャンスとなっております!
お申し込みはこちらから!
ConoHa WINGは国内最速の高性能レンタルサーバーサービスで
初期費用無料、最低利用期間無しでご利用いただけます!
(この記事は2024年11月01日に投稿されました。)
WordPressでカテゴリー情報を取得するにget_the_category()を使用します。
get_the_category()とは投稿記事に付与したカテゴリーの情報を取得するWordPressの関数となります。
パラメータに投稿記事のIDを指定することで、指定した記事に登録されているカテゴリーの情報を取得します。
そして、get_the_category()はWP_Term()のオブジェクトを返すため、カテゴリーの名前やスラッグなど必要なデータのみを取得することができます。
また、こちらの関数はカテゴリー情報を取得するのみになりますので、画面に出力したい場合はecho関数を使用しましょう。
今回はWordPressのget_the_category()でカテゴリー情報を取得する方法について紹介していきます。
投稿記事に付与したカテゴリーの情報を取得したい場合
カテゴリー情報を条件分岐として使用したい場合
get_the_category()とは
get_the_category()とは、投稿記事に付与されているカテゴリーの情報を取得するWordPressの関数になります。
投稿記事を公開した際に、カテゴリー枠にチェックを入れたカテゴリーの情報を取得することができるようになります。
get_the_category()の書き方
get_the_category()の書き方は下記のようになります。
1 | get_the_category(['投稿記事ID']) |
get_the_title()と記載し、括弧の中に任意な引数を1つ指定することで使用できます。
get_the_category()のパラメータ
get_the_category()ののパラメータは下記のようになります。
- 投稿記事ID: 任意
カテゴリーの情報を取得したい投稿記事のIDを指定する。
get_the_category()を記載し、括弧の中に任意の引数として、「投稿記事ID」を指定します。
get_the_category()の戻り値
get_the_category()の戻り値は「WP_Tearmオブジェクト」であり、カテゴリー情報(オブジェクト)を配列に格納して返すようになります。
get_the_category()の呼び出し元
get_the_category()の呼び出し元は「post-templete.php」となります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function get_the_category( $post_id = false ) { $categories = get_the_terms( $post_id, 'category' ); if ( ! $categories || is_wp_error( $categories ) ) { $categories = array(); } $categories = array_values( $categories ); foreach ( array_keys( $categories ) as $key ) { _make_cat_compat( $categories[ $key ] ); } /** * Filters the array of categories to return for a post. * * @since 3.1.0 * @since 4.4.0 Added the `$post_id` parameter. * * @param WP_Term[] $categories An array of categories to return for the post. * @param int|false $post_id The post ID. */ return apply_filters( 'get_the_categories', $categories, $post_id ); } |
get_the_category()は、get_the_terms()を呼び出しており、指定した投稿記事IDのカテゴリー情報を返しています。
get_the_category()でカテゴリー情報を取得するサンプルコード
get_the_category()でカテゴリー情報を取得するサンプルコードを紹介します。
ここでは、下記の2ケースでget_the_category()を使用します。
- 存在する投稿記事IDを指定する場合
- 存在しない投稿記事IDを指定する場合
存在する投稿記事IDを指定する場合
存在する投稿記事IDを指定する場合にget_the_category()を使用すると、指定した投稿記事に付与されているカテゴリーの情報を取得します。
試しに、下記の画像である投稿記事IDが「141」の記事に付与されたカテゴリー情報を取得します。
投稿記事一覧画面
カテゴリー一覧画面
● index.php
1 2 3 4 5 6 7 8 | <div class= 'cat-list'> <h1 class="entry-title">get_the_category()でカテゴリーの情報を取得</h1> <?php $category = get_the_category(141); ?> <?php $cat = $category[0]; ?> <div class= "cat-info"> <p><?php print_r($cat); ?></p> </div> </div> |
実行結果
get_the_category()で指定した投稿記事に付与されているカテゴリーの情報を取得しています。
「141」の投稿記事には「お知らせ」というカテゴリーが付与されていたため、「お知らせ」のカテゴリー情報がオブジェクトとして表示されています。
存在しない投稿記事IDを指定する場合
存在しない投稿記事IDを指定する場合にget_the_category()を使用すると、カテゴリー情報を取得しません。
● index.php
1 2 3 4 5 6 7 8 | <div class= 'cat-list'> <h1 class="entry-title">get_the_category()でカテゴリーの情報を取得</h1> <?php $category = get_the_category(9999); ?> <?php $cat = $category[0]; ?> <div class= "cat-info"> <p><?php print_r($cat); ?></p> </div> </div> |
実行結果
get_the_category()で指定した投稿記事に付与されているカテゴリーの情報を取得しています。
「9999」を指定していますが、「9999」を持つ投稿記事が存在しないため、カテゴリー情報を取得することができず「array(」のみが表示されています。
投稿記事IDを指定しないでget_the_category()を使用する場合
投稿記事IDを指定しない場合にget_the_category()を使用すると、最新の投稿記事に付与されているカテゴリー情報を取得します。
● index.php
1 2 3 4 5 6 7 8 | <div class= 'cat-list'> <h1 class="entry-title">get_the_category()でカテゴリーの情報を取得</h1> <?php $category = get_the_category(); ?> <?php $cat = $category[0]; ?> <div class= "cat-info"> <p><?php print_r($cat); ?></p> </div> </div> |
投稿記事一覧画面
実行結果
get_the_category()で指定した投稿記事に付与されているカテゴリーの情報を取得しています。
投稿記事IDを指定していないため、一番最新の投稿記事に付与されている「」のカテゴリー情報が表示されています。
get_the_category()でカテゴリー情報を別々で取得する場合
get_the_category()でカテゴリー情報を別々で取得する場合は、取得したデータに対して、アロー演算子を使用します。
アロー演算子とは、オブジェクトの中身にアクセスするための演算子であリ、オブジェクトが持つプロパティやメソッドを呼び出すことができます。
そのため、取得したオブジェクトに対してアロー演算子を使用すると、取得したカテゴリー情報を別々で取得することが可能になります。
ここでは下記の6ケースでget_the_category()を使用し、カテゴリーの情報を別々で取得します。
- カテゴリーの名前を取得する場合
- カテゴリーのIDを取得する場合
- カテゴリーのスラッグ名を取得する場合
- カテゴリーの説明を取得する場合
- カテゴリーの投稿数を取得する場合
- 親カテゴリーのIDを取得する場合
カテゴリーの名前を取得する場合
カテゴリーの名前を取得する場合は、get_category()で取得したオブジェクトに対して、「name」もしくは「cat_name」というプロパティを指定します。
● index.php
1 2 3 4 5 6 7 8 9 | <div class= 'cat-list'> <h1 class="entry-title">get_the_category()でカテゴリーの名前を取得</h1> <?php $category = get_the_category(141); ?> <?php $cat = $category[0]; ?> <div class= "cat-info"> <p>name: <?php echo $cat->name; ?></p> <p>cat_name: <?php echo $cat->cat_name; ?></p> </div> </div> |
実行結果
get_the_category()でカテゴリーの名前を取得しています。
そのため、カテゴリーの名前である「お知らせ」が表示されています。
カテゴリーのIDを取得する場合
カテゴリーのIDを取得する場合は、get_category()で取得したオブジェクトに対して、「term_id」もしくは「cat_ID」というプロパティを指定します。
● index.php
1 2 3 4 5 6 7 8 9 | <div class= 'cat-list'> <h1 class="entry-title">get_the_category()でカテゴリーのIDを取得</h1> <?php $category = get_the_category(141); ?> <?php $cat = $category[0]; ?> <div class= "cat-info"> <p>term_id: <?php echo $cat->term_id; ?></p> <p>cat_ID: <?php echo $cat->cat_ID; ?></p> </div> </div> |
実行結果
get_the_category()でカテゴリーのIDを取得しています。
そのため、「お知らせ」カテゴリーのIDである「8」が表示されています。
カテゴリーのスラッグ名を取得する場合
カテゴリー名を取得する場合は、get_category()で取得したオブジェクトに対して、「slug」もしくは「category_nicename」というプロパティを指定します。
● index.php
1 2 3 4 5 6 7 8 9 | <div class= 'cat-list'> <h1 class="entry-title">get_the_category()でカテゴリーのスラッグ名を取得</h1> <?php $category = get_the_category(141); ?> <?php $cat = $category[0]; ?> <div class= "cat-info"> <p>slug: <?php echo $cat->slug; ?></p> <p>category_nicename: <?php echo $cat->category_nicename; ?></p> </div> </div> |
実行結果
get_the_category()でカテゴリーのスラッグを取得しています。
そのため、「お知らせ」カテゴリーのスラッグである「news」が表示されています。
カテゴリーの説明を取得する場合
カテゴリーの説明を取得する場合は、get_category()で取得したオブジェクトに対して、「description」もしくは「category_description」というプロパティを指定します。
● index.php
1 2 3 4 5 6 7 8 9 | <div class= 'cat-list'> <h1 class="entry-title">get_the_category()でカテゴリーの説明を取得</h1> <?php $category = get_the_category(141); ?> <?php $cat = $category[0]; ?> <div class= "cat-info"> <p>description: <?php echo $cat->description; ?></p> <p>category_description: <?php echo $cat->category_description; ?></p> </div> </div> |
実行結果
カテゴリーの投稿数を取得する場合
カテゴリー名を取得する場合は、get_category()で取得したオブジェクトに対して、「count」もしくは「category_count」というプロパティを指定します。
● index.php
1 2 3 4 5 6 7 8 9 | <div class= 'cat-list'> <h1 class="entry-title">get_the_category()でカテゴリーの投稿数を取得</h1> <?php $category = get_the_category(141); ?> <?php $cat = $category[0]; ?> <div class= "cat-info"> <p>count: <?php echo $cat->count; ?></p> <p>category_count: <?php echo $cat->category_count; ?></p> </div> </div> |
実行結果
get_the_category()でカテゴリーの投稿数を取得しています。
そのため、「お知らせ」のカテゴリーの投稿数である「6」が表示されています。
親カテゴリーのIDを取得する場合
親カテゴリーのIDを取得する場合は、get_category()で取得したオブジェクトに対して、「parent」もしくは「category_parent」というプロパティを指定します。
ここでは下記2つの投稿記事に付与されているカテゴリー情報を取得します
投稿記事一覧画面
カテゴリー一覧画面
● index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <div class= 'cat-list'> <h1 class="entry-title">get_the_category()で親カテゴリーのIDを取得</h1> <?php $category = get_the_category(141); ?> <?php $cat = $category[0]; ?> <div class= "cat-info"> <p>parent: <?php echo $cat->parent; ?></p> <p>category_parent: <?php echo $cat->category_parent; ?></p> </div> <?php $category = get_the_category(); ?> <?php $cat = $category[0]; ?> <div class= "cat-info"> <p>parent: <?php echo $cat->parent; ?></p> <p>category_parent: <?php echo $cat->category_parent; ?></p> </div> </div> |
実行結果
get_the_category()で親カテゴリーIDを取得しています。
「お知らせ」カテゴリーは親がいないため、「0」が表示されています。
また、「テスト1」カテゴリーは親が存在するため、親カテゴリー「テスト」のIDである「8」が表示されています。
get_the_category()で複数のカテゴリー情報を取得する場合
先ほどまでは、引数に1つのカテゴリー情報を取得していましたが、2つ以上のカテゴリー情報をまとめて取得することもできます。
get_the_category()で複数のカテゴリー情報を取得するにはforeach()を使用します。
foreach()とは、指定した配列のそれぞれの要素に対して処理を行う文法になります。
今回、カテゴリー情報はオブジェクトで取得するため、forEach()を使用することで記事に紐づいている複数のカテゴリー情報を取得することが可能になります。
もし、foreach()について詳しく知りたい場合は下記の記事をご参考ください。
● single.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <div class= 'cat-list'> <h1 class="entry-title">get_the_category()で複数のカテゴリー情報を取得</h1> <div class= "cat-info"> <?php $categories = get_the_category(141); foreach ( $categories as $category ) { echo '<p>'; print_r($category); echo '</p>'; } ?> </div> <div class= "cat_info"> <?php $categories = get_the_category(141); foreach ( $categories as $category ) { $cat_name = $category->name; $cat_slug = $category->slug; echo '<p>'.$name.$cat_name.'</p>'; echo '<p>'.$slug.$cat_slug.'</p>'; } ?> </div> </div> |
投稿一覧画面
実行結果
get_the_category()で複数のカテゴリー情報を取得しています。
今回は「お知らせ」と「テスト」のカテゴリーが付与されているため、それぞれのカテゴリー情報が表示されています。
また、それぞれのカテゴリー情報から「カテゴリー名」と「スラッグ」を取得して表示されています。
get_the_category()を使用した実際のケース
get_the_category()を使用した実際のケースについてご紹介します。
投稿記事と同じカテゴリーの記事を表示する
get_the_category()を使用することで、カテゴ投稿記事と同じカテゴリーの記事を表示することができます。
例えば、表示している投稿記事内に関連記事の枠を設け、その枠に同じカテゴリーに属している投稿記事を関連記事として表示することができます。
するとサイト内での循環がよくなり、サイト内の投稿記事をみたユーザがほかの記事を見てくれるようになります。
● single.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <article> <header> <h1 style='font-size:32px;'><?php the_title(); ?></h1> </header> <div> <?php the_content(); ?> </div> <h2 style='text-align:center;'>関連記事</h2> <div class='related-list'> <?php $post_id = get_the_ID(); $post_cat = get_the_category(); $post_slug = $post_cat[0]->slug; ?> <?php $args = array( 'post_type' => 'post', // 投稿タイプ 'posts_per_page' => 9, // 表示件数 'post__not_in' => array($post_id), // 自分記事 'category_name' => $post_slug ); $wp_query = new WP_Query( $args ); $the_query = new WP_Query($args); if($the_query->have_posts()): while($the_query->have_posts()): $the_query->the_post(); ?> <div class="related-post"> <h3><?php the_title(); ?></h3> <div class="post-thumb"> <?php the_post_thumbnail(); ?> </div> </div> <?php endwhile; endif; ?> </div> </article> |
● style.css
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | .related-list { display: flex; flex-wrap: wrap; margin: 0 auto; width: 60%; margin: 0 auto; } .related-post { width: 32%; border: 2px solid black; margin-top: 8px; margin-right: 2%; list-style:none; } .related-post > a { text-decoration:none; } .related-post:nth-child(3n) { margin-right: 0; } .post-thumb { width: 100%; height: 100%; } .post-title { margin: 16px; } |
投稿一覧画面
実行結果
get_the_category()で投稿記事と同じカテゴリーの記事を表示しています。
WP_Query()オブジェクトで同じカテゴリに属している自分以外の投稿記事を10件取得するようにしています。
そのため、それぞれの記事を表示すると同じカテゴリに属している投稿記事が関連記事として表示されています。
付与しているカテゴリーで表示する内容を変える
get_the_category()を使用することで、付与しているカテゴリーで表示する内容を変えることができます。
例えば、get_the_category()で「お知らせ」のカテゴリーを付与している記事と「紹介」のカテゴリーを付与している記事とで、それぞれ異なるキャッチ文を表示します。
● index.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <article> <header> <?php $post_cat = get_the_category(); $post_slug = $post_cat[0]->slug; ?> <?php $content1 = ''; $content2 = ''; switch ($post_slug) { case 'news': $content1 = '2024年12月9日に新しいエリアがオープン!'; $content2 = '詳しい情報はこちらから!'; break case 'intro': $content1 = '岩盤浴エリアでは9つのエリアが遊び放題!'; $content2 = 'フードコートもあり、子供も大人も一日中楽しめます!'; break } ?> <?php if ($content1 != '' || $content2 != '') { $html1 = "<div class= 'new-title'><p>".$content1.'</p>'; $html2 = '<p>'.$content2.'</p></div>'; echo $html1.$html2; } ?> <?php the_post_thumbnail('medium'); ?> <?php the_title('<h1>', '</h1>'); ?> </header> <div> <?php the_content(); ?> </div> <footer></footer> </article> |
● style.css
1 2 3 4 5 | .new-title { text-align:center; font-size:20px; font-weight:bold; } |
投稿一覧画面
実行結果
get_the_category()で取得したデータからスラッグ名を取得し、スラッグ名を条件として該当する記事には投稿内容の前に固定の文字列を出力するようにしています。
そのため、「お知らせ」のカテゴリーに属している記事と「紹介」のカテゴリーに属している記事にはそれぞれ別の文章が表示されています。
全てのカテゴリー情報を取得する場合
全てのカテゴリー情報を取得するには、get_categories()を使用します。
get_categories()とは、WordPress上で登録されているカテゴリーの情報を全て取得することができるWordPressの関数になります。
カテゴリー情報を取得するため、こちらのWP_Term()のオブジェクトを返すようになります。
● index.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <div class= 'cat-list'> <h1 class="entry-title">get_categories()で全てのカテゴリー情報を取得</h1> <?php $categories = get_categories(); ?> <div> <ol> <?php foreach( $categories as $category ) { $category = $category->name; echo '<li style="text-align: left;">'.$category.'</li>'; } ?> </ol> </div> </div> |
実行結果
get_categories()で全てのカテゴリー情報を取得しています。
今回はカテゴリー名だけを表示したため、WordPress内に登録されている全てのカテゴリー名が表示されています。
カテゴリーをHTML要素として表示する場合
カテゴリーをHTML要素として表示するには、the_category()を使用します。
the_category()とは、投稿記事に付与されているカテゴリー名をHTMLタグ付きで表示することができるWordPressの関数になります。
リンク付きで表示することができるため、それぞれの記事にカテゴリー名を表示したり、カテゴリーページと繋げたりしたい場合に使用できます。
● index.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | ndex.html <article> <header> <h1 style='font-size:32px;'>the_category()でカテゴリーをHTML要素として表示</h1> <div> <?php the_post_thumbnail('thumbnail'); ?> <?php the_title('<h3>', '</h3>') ?> </div> </header> <div> <?php the_content(); ?> </div> <div> <?php the_category(); ?> </div> </article> |
実行結果
the_category()でカテゴリーをHTML要素として表示しています。
そのため、それぞれの投稿記事に付与されているカテゴリーがリンク付きで表示されています。
まとめ
⚫︎ get_the_category()とは、投稿記事に付与されているカテゴリーの情報をオブジェクトで取得するWordPressの関数である。
⚫︎ get_the_category()は下記のパラメータを指定して使用する。
・投稿記事ID(任意)
⚫︎ 存在する投稿記事IDを指定してget_the_category()を使用すると、付与されているカテゴリー情報を取得する。
⚫︎ 存在しない投稿記事IDを指定してget_the_category()を使用すると、カテゴリー情報を取得しない。
⚫︎ 投稿記事IDを指定しないでget_the_category()を使用すると、最新記事に付与されたカテゴリー情報を取得する。
⚫︎ get_the_category()でカテゴリー情報を別々で取得する場合は、get_the_category()で取得したデータに対してアロー演算子を使用し、プロパティを指定して使用する。
・カテゴリーの名前を取得する場合:
→ プロパティは「name」もしくは「cat_name」
・カテゴリーのIDを取得する場合:
→ プロパティは「term_id」もしくは「cat_ID」
・カテゴリーのスラッグ名を取得する場合
→ プロパティは「slug」もしくは「category_nicename」
・カテゴリーの説明を取得する場合
→ プロパティは「description」もしくは「category_description」
・カテゴリーの投稿数を取得する場合
→ プロパティは「copunt」もしくは「category_count」
・親カテゴリーのIDを取得する場合
→ プロパティは「parent」もしくは「category_parent」
⚫︎ get_the_category()で複数のカテゴリー情報を取得するにはforeach()と組み合わせて使用する。
⚫︎ get_the_category()の具体的な使用ケースとして下記のようなものがある。
・ブログカードとして表示する
・ジャンル別に分けて表示する
⚫︎ 全てのカテゴリー情報を取得するには、get_categories()を使用する。
⚫︎ カテゴリーをHTML要素として表示するには、the_category()を使用する。