WordPressのオリジナルテーマ開発をしています。
記事詳細ページにてカテゴリー一覧を表示させているのですが、
閲覧している記事のカテゴリに合わせて、該当カテゴリーにカレントクラスを付けたいのですが、
色々試してうまくできなかったので、ご相談致します。
原因としては、ループの外側で表示しているからカテゴリーを読み込めないのでしょうか?
知識不足ですいません。
不足している情報等ありましたら、お知らせください。
以下がコードになります。
php
1single.php 2<?php 3/** 4 * The template for displaying post pages 5 * Template Name: post_page 6 * 7 * @link https://developer.wordpress.org/themes/basics/template-hierarchy/ 8 * 9 * @package hamaen 10 */ 11 12get_header(); 13?> 14 <section class="page_title"> 15 <div class="breadcrumb"> 16 <a href="<?php echo home_url(); ?>">HOME</a> 17 <a href=""><?php wp_title(''); ?></a> 18 </div> 19 <img src="<?php echo get_template_directory_uri(); ?>/images/company/shio.svg" alt="塩"> 20 <h2 class=""><?php wp_title(''); ?></h2> 21</section> 22<main> 23<section class="info_intro"> 24 <p class="info_intro_txt">本ページは、メーカー様・小売店様・専門業者様・官公庁などお取引様向けの情報提供ページになります。<br>一般のお客様へ商品の直接販売は行っておりませんのでご了承ください。</p> 25 26 <ul class="category_list"> 27 <li><a href="<?php echo home_url("information"); ?>">新着情報</a></li> 28 <?php 29 $categories = get_categories('hide_empty=1&title_li='); 30 if (is_array($categories)) { 31 foreach($categories as $category): 32 $cat_id = $category->cat_ID; 33 $cat_title = $category->cat_name; 34 $cat_url = get_category_link($cat_id); 35 echo "<li"; 36 if (is_category($cat_id)) { 37 echo ' class="current"'; 38 } 39 echo '><a href="'.$cat_url.'" title="'.$cat_title.'">'.$cat_title.'</a></li>'; 40 endforeach; 41 } 42 ?> 43 </ul> 44 <div class="info_archive_box"> 45 <?php 46 // 同じカテゴリから記事を10件呼び出す 47 $categories = get_the_category($post->ID); 48 $category_ID = array(); 49 foreach($categories as $category): 50 array_push( $category_ID, $category -> cat_ID); 51 endforeach ; 52 $args = array( 53 #'post__not_in' => array($post -> ID), // 今読んでいる記事を除く 54 'posts_per_page'=> -1, 55 'category__in' => $category_ID, 56 #'orderby' => 'rand', // ランダムに記事を選ぶ 57 ); 58 $query = new WP_Query($args); 59 if( $query -> have_posts() ): while ($query -> have_posts()) : $query -> the_post(); 60 ?> 61 <div class="info_post"> 62 <a href="<?php the_permalink(); ?>"></a> 63 <time datatime="<?php echo get_the_date('Y年n月j日'); ?>" itemprop="datepublished"><?php echo get_the_date('Y年n月j日'); ?></time> 64 <span class="info_cat"> 65 <?php $cat = get_the_category(); 66 $cat = $cat[0]; 67 { echo $cat->cat_name; } ?> 68 </span> 69 <p><?php the_title(); ?></p> 70 </div> 71 <?php endwhile; endif; ?> 72 <?php wp_reset_postdata(); ?> 73 </div> 74</section> 75<section class="info_contents"> 76 <h3 class="info_post_title"><?php the_title(); ?></h3> 77 <time datatime="2<?php echo get_the_date('Y年n月j日'); ?>" itemprop="datepublished"><span>情報公開日 : </span><?php echo get_the_date('Y年n月j日'); ?></time> 78 <div class="info_item"> 79 <?php the_content(); ?> 80 </div> 81</section> 82</main> 83<!-- フッター --> 84<?php get_footer('common'); ?>
分かりにくいと思いますので、以下の箇所が今回のカテゴリーを一覧で表示しているコードです。
こちらは上部のコードから抜粋しているものです。
php
1 <ul class="category_list"> 2 <li><a href="<?php echo home_url("information"); ?>">新着情報</a></li> 3 <?php 4 $categories = get_categories('hide_empty=1&title_li='); 5 if (is_array($categories)) { 6 foreach($categories as $category): 7 $cat_id = $category->cat_ID; 8 $cat_title = $category->cat_name; 9 $cat_url = get_category_link($cat_id); 10 echo "<li"; 11 if (is_category($cat_id)) { 12 echo ' class="current"'; 13 } 14 echo '><a href="'.$cat_url.'" title="'.$cat_title.'">'.$cat_title.'</a></li>'; 15 endforeach; 16 } 17 ?> 18 </ul>
以上になります。
ご確認お願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/18 01:15
2020/11/18 01:35
2020/11/18 01:49