teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

2

現状のコードを記載しました。

2020/03/30 03:12

投稿

xminimx
xminimx

スコア53

title CHANGED
File without changes
body CHANGED
@@ -21,4 +21,64 @@
21
21
 
22
22
  ---
23
23
  追記
24
- 上記phpはarchive-news.phpとtaxonomy.phpに記述します。
24
+ 上記phpはarchive-news.phpとtaxonomy.phpに記述します。
25
+
26
+ ---
27
+ さらに追記
28
+ 現状のarchive.phpです。
29
+ ```php
30
+ <ul class="list pc">
31
+ <li class="item bg--01 active">全てを見る</li>
32
+ <?php $categories = get_categories(array('taxonomy' => 'news_cat')); if ( $categories ) : ?>
33
+ <?php foreach ( $categories as $category ): ?>
34
+ <?php
35
+ $taxonomy = 'news';
36
+ $term_slug = get_query_var('term');
37
+ $the_term = get_term_by('slug', $term_slug, $taxonomy);
38
+ $cat_id = $category->cat_ID;
39
+ $term_idsp = 'category_'.$cat_id;
40
+ //if(get_field('catcolor', $term_idsp)){
41
+ //echo get_field('catcolor', $term_idsp);} 必要かどうか分からないので非表示、今の所必要なさそう
42
+ ?>
43
+ <a class="item bg--<?php echo $category->slug ?> <?php echo get_field('catcolor', $term_idsp); ?>
44
+ <?php echo $category->slug ?>" href="<?php echo esc_url( home_url() ); ?>/news/<?php echo $category->slug ?>/"><li data-id="<?php echo $category->slug ?>"><?php echo esc_html( $category->name ); ?></li>
45
+ </a>
46
+ <?php endforeach; ?>
47
+ <?php endif; ?>
48
+ </ul>
49
+ ```
50
+ ここまででカラーコードをa.itemのクラス名として出力することはできました。
51
+ ここから行いたいこととして、
52
+ 0. JSを使い、現在ページのURLにスラッグ名が含まれている場合、背景色をcatcolorで定めた色にする
53
+ 0. 記事のループの中でカテゴリアイコンの背景色をcatcolorにする(以下コード詳細)
54
+ ```php
55
+ <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
56
+ <!-- ▽ ループ開始 ▽ -->
57
+  <li class="item">
58
+   <div class="item__left">
59
+    <div class="item__date" datetime="<?php the_time('Y-m-d'); ?>"><?php the_time('Y.m.d'); ?></div>
60
+    <?php $terms = get_the_terms($post -> ID, 'news_cat');//カスタム投稿名news_catの投稿を取得
61
+        foreach($terms as $term){
62
+        $term_slug = $term -> slug;
63
+        }?>
64
+    <div class="item__cate item__cate--<?php echo esc_html($term_slug); ?>" style="background-color:"> <!--カテゴリボタン ここにカラーコードを入れたい-->
65
+ <?php echo esc_html($term->name); ?><!--カテゴリ名-->
66
+ </div>
67
+ </div>
68
+  <div class="item__right"> <!--記事タイトル-->
69
+   <?php
70
+   $last_post_ids = array();
71
+   $lastposts = get_posts('post_type=news&posts_per_page=1');
72
+   foreach($lastposts as $lastpost) {
73
+   $last_post_ids[] = $lastpost->ID;
74
+   }?>
75
+   <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
76
+  </div>
77
+ </li>
78
+ <!-- △ ループ終了 △ -->
79
+ <?php endwhile; ?>
80
+ ```
81
+ このコードの中に、先ほどのコードを記述してもカラーコードは表示されません。
82
+ おそらく
83
+ 〜foreach($terms as $term){$term_slug = $term -> slug;}?> で違うループを指定しているのが原因だと思うのですが
84
+ ここを変えると他の部分が表示されなくなってしまいます。

1

該当コードを複数のphpに記述するのでその旨追記しました。

2020/03/30 03:12

投稿

xminimx
xminimx

スコア53

title CHANGED
File without changes
body CHANGED
@@ -17,4 +17,8 @@
17
17
  ```
18
18
  <?php the_field( '[フィールド名]' ); ?>で値が出力されると思ったのですが、何が悪いのかわかりません。
19
19
  エラーなどは出ていないので、間違いはないと思うのですが…これはcatcolorを読めてないだけなのでしょうか。
20
- 詳しい方、どうぞお知恵を貸してください。
20
+ 詳しい方、どうぞお知恵を貸してください。
21
+
22
+ ---
23
+ 追記
24
+ 上記phpはarchive-news.phpとtaxonomy.phpに記述します。