【前提条件】
WordPressにてオリジナルテーマを作成しております。
ページ構成は下記の通りです。
functions.php
index.php
header.php
front-page.php
home.php
single.php
sidebar.php
page-php
page-aaa.php
page-bbb.php
page-ccc.php
category.php
footer.php
そして、HOME、BLOG(記事一覧ページ)、AAA、BBB、CCC、お問い合わせの6つの固定ページを作成しました。
front-page.php = トップページ
home.php = BLOG(記事一覧ページ)
page-aaa.php = AAA
page-bbb.php = BBB
page-ccc.php = CCC
page-php = お問い合わせ
という感じで表示させています。
トップページ、BLOG、カテゴリーページに、投稿記事の一覧を挿入しており、トップページには6記事を、BLOG、カテゴリーページには1ページに8記事を表示させております。
また、カテゴリーは4つ作成しております。
【解決したいこと】
投稿記事一覧のカテゴリー欄や、カテゴリーページでの表示をきちんとさせたいと思っております。
【起きている問題】
カテゴリーが1つだけしか表示されていません。
表示されているカテゴリーの記事数もおかしいです。
例えばですが、
aカテゴリー = 14記事
bカテゴリー = 2記事
cカテゴリー = 1記事
dカテゴリー = 2記事
とすると、今表示されているのが全てaカテゴリーです。管理画面からb, c, dを表示させても、表示されているのがaカテゴリーになってしまいます…。しかも14記事しかありませんが、16記事表示されています。
ただ、b, c, dについては、カテゴリーページのタイトルはきちんとb, c, dになります。
【ソースコード】
下記、トップページでカテゴリーを表示させるコードです。
<?php $blog_query = new WP_Query( array( 'post_type' => 'post', 'posts_per_page' => 6, )); ?> <div class="blog__cards wow fadeIn" data-wow-delay=".5s"> <?php if ( $blog_query->have_posts() ) : ?> <?php while ( $blog_query->have_posts() ): ?> <?php $blog_query->the_post(); ?> <article class="blog__card"> <a href="<?php the_permalink(); ?>" class="blog__card__link"> <div class="blog__card__img"> <?php if (has_post_thumbnail() ) { the_post_thumbnail('large'); } else { echo '<img src="'.esc_url(get_template_directory_uri()).'/src/images/no-image.png" alt="No image">'; }?> </div> <div class="blog__card__body"> <div class="blog__card-meta"> <?php $category = get_the_category(); if ($category[0] ) { echo '<a href="'.esc_url(get_category_link( $category[0]->term_id )).'">'.$category[0]->cat_name.'</a>'; } ?> <time class="blog__card__time" datetime="<?php the_time('c'); ?>"><?php the_time('Y/n/j'); ?></time> </div> <h3 class="blog__card__title"><?php the_title(); ?></h3> </div> </a> </article> <?php endwhile; ?> <?php endif; ?> <?php wp_reset_postdata(); ?>
下記、BLOG、カテゴリーページでカテゴリーを表示させるためのコードです。
<?php global $post; $args = array( 'posts_per_page' => 8 ); $myposts = get_posts( $args ); foreach( $myposts as $post ) { setup_postdata($post); ?> <article class="blog__card"> <a href="<?php the_permalink(); ?>" class="blog__card__link"> <div class="blog__card__img"> <?php if (has_post_thumbnail() ) { the_post_thumbnail('large'); } else { echo '<img src="'.esc_url(get_template_directory_uri()).'/src/images/no-image.png" alt="No image">'; } ?> </div> <div class="blog__card__body"> <div class="blog__card-meta"> <?php $categories = get_the_category(); if ( $categories ) { echo '<a href="'.esc_url(get_category_link( $categories[0]->term_id )).'">'.$categories[0]->name.'</a>'; } ?> <time class="blog__card__time" datetime="<?php the_time('c'); ?>"><?php the_time('Y/n/j'); ?></time> </div> <h3 class="blog__card__title"><?php the_title(); ?></h3> </div> </a> </article> <?php } wp_reset_postdata(); ?>
【問題解決するために試したこと】
「カテゴリー 表示 おかしい」、「カテゴリー 異なるカテゴリー 表示される」、「category.php 表示」、「カテゴリー 違う」等でかなり調べましたが、めぼしい記事が見当たりませんでした…。
他にも、Youtubeにてcategory.phpと検索し、いくつか動画をみましたが、解決しませんでした。
GoogleやYoutubeで調べた結果ですが、カテゴリーの表示のさせ方はみつかりました。ただ、今回問起きているような、カテゴリーページの表示はされるけど、特定のカテゴリーしか表示されないときの解決法がわかるような記事は見当たりませんでした…。
なお、コードは以下の記事を参考にして作成しております。
【問題について自分なりに考えたこと】
<?php $categories = get_the_category(); if ( $categories ) { echo '<a href="'.esc_url(get_category_link( $categories[0]->term_id )).'">'.$categories[0]->name.'</a>'; } ?>
ここのコードに問題があるのかなと思っているのですが、皆目検討がつきません…。
2〜3日考えていますが全く解決できておりません…。
ご教示いただけますと大変ありがたいです(泣)
何卒よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。