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

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

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

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

6632閲覧

Advanced Custom Fieldsの値が出力されない

xminimx

総合スコア53

WordPress

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/03/26 09:16

編集2020/03/30 03:12

カスタム投稿のカテゴリに自由に色を設定したいと思いAdvanced Custom Fieldsを導入しました。
Advanced Custom Fieldsで設定したフィールド「catcolor」の値を出力させたいのですが、get fieldが効かず?何も反映されない状態です。
細工なコードかもしれませんが以下現状となります。

php

1<ul class="list pc"> 2 <li class="item bg--01 active">全てを見る</li> //全てのカテゴリ(現在のページなのでactive) 3 <?php $categories = get_categories(array('taxonomy' => 'news_cat')); if ( $categories ) : ?> //カスタム投稿で作成したnews_catというカテゴリを取得 4 <?php foreach ( $categories as $category ): ?> //以下、news_catカテゴリがあるだけ繰り返す処理 5 <?php $color = get_field('catcolor');?>//catcolorの値を$colorとする 6  <a class="item bg--<?php echo $category->slug ?> <?php echo $color ; ?> <?php echo $category->slug ?>" href="<?php echo esc_url( home_url() ); ?>/news/<?php echo $category->slug ?>/">//クラスbg--の後ろにカテゴリスラッグをつけ、スラッグ自体もクラスにする。ここでcolorも出てくるはずが、何も出てこない。リンク先はドメイン/news/カテゴリ名とする。 7 <li data-id="<?php echo $category->slug ?>"><?php echo esc_html( $category->name ); ?></li>//data-idとしてカテゴリスラッグを取得、テキストでカテゴリ名を出力 8</a> 9<?php endforeach; ?>//繰り返し処理終わり 10<?php endif; ?> 11</ul>
<?php the_field( '[フィールド名]' ); ?>で値が出力されると思ったのですが、何が悪いのかわかりません。

エラーなどは出ていないので、間違いはないと思うのですが…これはcatcolorを読めてないだけなのでしょうか。
詳しい方、どうぞお知恵を貸してください。


追記
上記phpはarchive-news.phpとtaxonomy.phpに記述します。


さらに追記
現状のarchive.phpです。

php

1<ul class="list pc"> 2 <li class="item bg--01 active">全てを見る</li> 3 <?php $categories = get_categories(array('taxonomy' => 'news_cat')); if ( $categories ) : ?> 4 <?php foreach ( $categories as $category ): ?> 5 <?php 6 $taxonomy = 'news'; 7 $term_slug = get_query_var('term'); 8 $the_term = get_term_by('slug', $term_slug, $taxonomy); 9 $cat_id = $category->cat_ID; 10 $term_idsp = 'category_'.$cat_id; 11 //if(get_field('catcolor', $term_idsp)){ 12 //echo get_field('catcolor', $term_idsp);} 必要かどうか分からないので非表示、今の所必要なさそう 13 ?> 14 <a class="item bg--<?php echo $category->slug ?> <?php echo get_field('catcolor', $term_idsp); ?> 15 <?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> 16 </a> 17 <?php endforeach; ?> 18 <?php endif; ?> 19 </ul>

ここまででカラーコードをa.itemのクラス名として出力することはできました。
ここから行いたいこととして、
0. JSを使い、現在ページのURLにスラッグ名が含まれている場合、背景色をcatcolorで定めた色にする
0. 記事のループの中でカテゴリアイコンの背景色をcatcolorにする(以下コード詳細)

php

1<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 2<!-- ▽ ループ開始 ▽ --> 3 <li class="item"> 4  <div class="item__left"> 5   <div class="item__date" datetime="<?php the_time('Y-m-d'); ?>"><?php the_time('Y.m.d'); ?></div> 6   <?php $terms = get_the_terms($post -> ID, 'news_cat');//カスタム投稿名news_catの投稿を取得 7       foreach($terms as $term){ 8       $term_slug = $term -> slug; 9       }?> 10   <div class="item__cate item__cate--<?php echo esc_html($term_slug); ?>" style="background-color:"> <!--カテゴリボタン ここにカラーコードを入れたい--> 11 <?php echo esc_html($term->name); ?><!--カテゴリ名--> 12 </div> 13 </div> 14 <div class="item__right"> <!--記事タイトル--> 15  <?php 16  $last_post_ids = array(); 17  $lastposts = get_posts('post_type=news&posts_per_page=1'); 18  foreach($lastposts as $lastpost) { 19  $last_post_ids[] = $lastpost->ID; 20  }?> 21  <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> 22 </div> 23</li> 24<!-- △ ループ終了 △ --> 25<?php endwhile; ?>

このコードの中に、先ほどのコードを記述してもカラーコードは表示されません。
おそらく
〜foreach($terms as $term){$term_slug = $term -> slug;}?> で違うループを指定しているのが原因だと思うのですが
ここを変えると他の部分が表示されなくなってしまいます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

こちら、参考になるでしょうか?
カテゴリやタームに紐づけたカスタムフィールドを取得し、表示する

以下のように、第2引数を指定するとよさそうです。
今回の場合だと「タームID」を追加してください。

PHP

1// get_field('カスタムフィールド名', カスタム分類(タクソノミー)名_タームID) 2get_field('catcolor', news_cat_タームID) 3

投稿2020/03/26 11:33

編集2020/03/26 21:46
new1ro

総合スコア4528

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

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

kei344

2020/03/26 14:57

リンク先では別の書き方をしていますよ。
xminimx

2020/03/27 01:08 編集

kei344さん <?php get_field('カスタムフィールド名', $post->ID)?> で行うところを、<?php get_field('カスタムフィールド名', 'カスタム分類(タクソノミー)名_タームID')?> にするということだと思うのでnew1roさんのアドバイスを試してみようと思います。 new1roさん ありがとうございます。ちなみにとても初歩的な質問になるのですが、タームIDはどうやって確認すれば良いでしょうか。 <?php get_queried_object_id();?> <p>タームID:<?php $tax_id=get_queried_object_id();echo $tax_id;?></p> これを試してみたのですが、0となったので0で良いのでしょうか。
new1ro

2020/03/27 03:32

> 0となったので0で良いのでしょうか。 断言できないですが、おそらく違います。 WordPressの管理画面で、 「カテゴリやタームに紐づけたカスタムフィールドを取得し、表示する」のリンク先 https://kaiza.jp/result/result-391/ を参考に、試してみてほしいです。 ----- // カスタム分類名 $taxonomy = 'products_cat'; $term_slug = get_query_var('term'); $the_term = get_term_by('slug', $term_slug, $taxonomy); $term_id = $the_term->term_id; //タームのカスタムフィールドを取得するためのIDは「カスタム分類(タクソノミー)名_タームID」 $term_idsp = $taxonomy."_".$term_id;
xminimx

2020/03/30 01:22 編集

すみません、リンク先の内容をほとんど理解できていないです… ご提示いただいた「カスタム分類名」以下のコードをarchive-news.phpに書いてみましたが何も変わりませんでした。 https://webkcampus.com/201903/1567/ こちらも参考にしながらfunction.phpとarchive.phpを編集してみたのですがこちらも何も表示されませんでした。 追記 再度確認してみて <?php $taxonomy = 'news'; $term_slug = get_query_var('term'); $the_term = get_term_by('slug', $term_slug, $taxonomy); $cat_id = $category->cat_ID; //タームのカスタムフィールドを取得するためのIDは「カスタム分類(タクソノミー)名_タームID」 $term_idsp = 'category_'.$cat_id; //なお、タームではなく、カテゴリの場合は「category_カテゴリID」にする //$cat_id = $category->cat_ID; //$term_idsp = 'category_'.$cat_id; if(get_field('catcolor', $term_idsp)){ echo get_field('catcolor', $term_idsp); } ?> 以上を記述したところ、設定したカラーコードが表示されるようになりました、ありがとうございます! if(get_field('catcolor', $term_idsp)){ echo get_field('catcolor', $term_idsp); } ?> ここで表示されていると思うのですが、cssの中に呼び出すのに苦戦しております。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問