質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

Q&A

解決済

1回答

424閲覧

wordpress 記事の一覧ページで「カテゴリー」が取得できない。

tkm0604

総合スコア552

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

0グッド

0クリップ

投稿2023/02/15 04:46

編集2023/02/15 04:47

実現したいこと

Wordpress カスタム投稿の記事一覧に、その記事が持つカテゴリーを表示させたい。

以下のようにループの処理を書きました。
カテゴリーのID 2,3,4を取得したく  'category__in' => array(2, 3, 4 ), と書いたのですが、これだと「投稿が存在しません。」となってしまいます。
'category__in' => array(2, 3, 4 ),の記述を消すと、'post_type' => 'news',の記事がすべて取得、表示されるので、カテゴリーのID 2,3,4を取得したく追加した  'category__in' => array(2, 3, 4 ),がうまく動作していないのですが、どうすればカテゴリー名を取得し、一覧内でその記事が持つカテゴリーを表示できますか?

archive.php

1<?php 2$args = array( 3 'post_type' => 'news', 4 'order' => 'DESC', 5 'category__in' => array(2, 3, 4 ), 6); 7 8$the_query = new WP_Query($args); 9if ($the_query->have_posts()) : 10?> 11 <!-- ループ前の開始タグ --> 12 <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> 13 <!-- posts_per_page: -1 --> 14 <li class="news-list__item"> 15 <div class="news-list-item"> 16 <div class="news-list-item__category"> 17 <p class="label-category -news"><?php the_category(", "); ?></p> 18 </div> 19 <div class="news-list-item__date"> 20 <p class="label-date"><?= get_the_time('Y.m.d', $id); ?></p> 21 </div> 22 <div class="news-list-item__title"> 23 <p class="text"><a href=<?php the_permalink(); ?>><?= get_the_title(); ?></a></p> 24 </div> 25 </div> 26 </li> 27 <?php 28 endwhile; 29 ?> 30<?php 31else : 32?> 33 <div class="c-text-box u-text-align-center-pc"> 34 <p>投稿が存在しません。</p> 35 </div> 36<?php 37endif; 38wp_reset_postdata(); 39?>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

wordpressの通常の投稿とカスタム投稿でカテゴリー(ターム)の取得方法が異なることを理解していませんでした。

以下のように書くことでカスタム投稿のカテゴリー名を取得表示。
特定のタームの記事は取得しない。

実装できました。

<?php $args = array( 'post_type' => 'news', 'order' => 'DESC', 'tax_query' => array( array( 'taxonomy' => 'custom-post_cat', // カスタムタクソノミー 'terms' => 'important_information', //ターム名 'operator' => 'NOT IN', 'field' => 'slug' ), ), ); $the_query = new WP_Query($args); if ($the_query->have_posts()) : ?> <!-- ループ前の開始タグ --> <?php while ($the_query->have_posts()) : $the_query->the_post(); ?> <!-- posts_per_page: -1 --> <li class="news-list__item"> <div class="news-list-item"> <div class="news-list-item__category"> <p class="label-category -news"> <?php $terms = get_the_terms($post->ID, 'custom-post_cat'); foreach ($terms as $term) : echo $term->name; endforeach; ?> </p> </div> <div class="news-list-item__date"> <p class="label-date"><?= get_the_time('Y.m.d', $id); ?></p> </div> <div class="news-list-item__title"> <p class="text"><a href=<?php the_permalink(); ?>><?= get_the_title(); ?></a></p> </div> </div> </li> <?php endwhile; ?> <?php else : ?> <div class="c-text-box u-text-align-center-pc"> <p>投稿が存在しません。</p> </div> <?php endif; wp_reset_postdata(); ?>

投稿2023/02/15 06:04

tkm0604

総合スコア552

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問