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

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

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

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

Q&A

解決済

2回答

2994閲覧

ACFのフィールドタイプ【タクソノミー】で指定したタクソノミーの画像を表示させたい

退会済みユーザー

退会済みユーザー

総合スコア0

WordPress

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

0グッド

0クリップ

投稿2017/12/27 08:00

編集2018/01/01 16:42

ACFのフィールドタイプ【タクソノミー】で指定したタクソノミーの画像を表示させたいです。

###前提・実現したいこと
0. カスタム投稿タイプAuthorにACFのフィールドタイプ【タクソノミー】を設置
0. 【タクソノミー】に関してはカスタム投稿タイプArticleのタームを複数選択
0. タームのリンクと、タクソノミーにACFで設置した画像を表示

###発生している問題
シングルページなのでそのページが属しているタームを吐き出しているため、同じ画像が繰り返し表示してしまう。

###該当のソースコード

<?php $terms = get_field('author_article_list'); if( $terms ): ?> <ul id="sideContentsAuthorSeries"> <?php foreach( $terms as $term ): ?> <li><a href="<?php echo get_term_link( $term ); ?>"><?php $ctm = get_post_meta($post->ID, 'header_images', true);?> <?php if(empty($ctm)):?> <?php $term_sp = get_the_terms( $post->ID, 'articlecat' ); $term_idsp = 'articlecat_'.$term_id; $photo = get_field('cat_images_02',$term_idsp); $photosp = wp_get_attachment_image_src($photo, 'full'); ?> <img src="<?php echo $photosp[0]; ?>" alt="<?php echo $term_name; ?>"> <?php else : ?> <?php $icatchimage = wp_get_attachment_image_src(get_field('header_images'), 'full'); ?> <img src="<?php echo $icatchimage[0]; ?>" alt="<?php echo get_the_title(get_field('header_images')) ?>" /> <?php endif;?></a></li> <?php endforeach; ?> </ul> <?php endif; ?>

##解決したコード
無事解決しました。やりたいことを色々と織り交ぜすぎてシンプルにできるところをしていなかったため、コードがぐちゃぐちゃになってしまったのが原因かと思います。

<?php $terms = get_field('author_article_list'); if( $terms ): ?> <ul> <?php foreach( $terms as $term ): ?> <li><a href="<?php echo get_term_link( $term ); ?>"> <?php $term_sp = get_term_by( 'id', $term, 'articlecat' ); $term_idsp = 'articlecat_'.$term_sp->term_id; $photo = get_field('cat_images_02',$term_idsp); $photosp = wp_get_attachment_image_src($photo, 'full'); ?> <img src="<?php echo $photosp[0]; ?>" alt="<?php echo $term_sp->name ?>"> </a> </li> <?php endforeach; ?> </ul> <?php endif; ?>

画像の呼び出し方が悪いのはわかっているものの、うまくいかないのでご教授お願いいたします。

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

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

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

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

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

guest

回答2

0

コードが抜粋でなければ$term_idが無いからではないですか?

投稿2017/12/27 09:30

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2017/12/29 17:40

そこはわかってるんで、発生している問題として書いています。
退会済みユーザー

退会済みユーザー

2017/12/30 03:09

なんか高圧的ですね。 >発生している問題として書いています。 の意味が分かりませんが、では$termsの中身は何ですか?
退会済みユーザー

退会済みユーザー

2018/01/01 12:20 編集

高圧的に感じさせてしまったのであれば謝罪しますが、 「シングルページなのでそのページが属しているタームを吐き出しているため、同じ画像が繰り返し表示してしまう。」 と質問書かせていただいているのですが読まれているのでしょうか。 逆引き含め書籍を通して構築できるのですが、それ以上のチャレンジをしたいと考えています。 なるだけ自分で解決をしたいのですがどうしてもわからない場合利用させていただいている状況です。 コードもいじくりまわした結果よりも初期解決できなかったコードを書いているのですが・・・ >では$termsの中身は何ですか? $terms = get_field('author_article_list'); ではないんですか?
guest

0

ベストアンサー

コード内コメントを参照してください。

PHP

1<li><a href="<?php echo get_term_link( $term ); ?>"><?php $ctm = get_post_meta($post->ID, 'header_images', true);?> 2<?php if(empty($ctm)):?><!-- // なぜ$post->ID の 'header_images' を基準に分岐しているのかが意味がわからない。$termの画像を出すのが主目的なのでは? --> 3 <?php 4 $term_sp = get_the_terms( $post->ID, 'articlecat' ); // get_the_termsは当該記事に所属するterm情報を配列で返すのでなぜ使っているかがわからない。$termにidが入っているなら、get_term_by( 'id', $term, 'articlecat' )じゃね? 5 $term_idsp = 'articlecat_'.$term_id; // どこから$term_idが出てきたんだろう。100歩譲って「$term_sp[0]->term_id」だろうな、と思う。get_term_byを使った場合「$term_sp->term_id」。 6 $photo = get_field('cat_images_02',$term_idsp); 7 $photosp = wp_get_attachment_image_src($photo, 'full'); 8 ?> 9 <img src="<?php echo $photosp[0]; ?>" alt="<?php echo $term_name; ?>"><!-- // $term_name はどこから来た?get_term_byを使った場合「$term_sp->name」。 --> 10<?php else : ?> 11 <?php 12 $icatchimage = wp_get_attachment_image_src(get_field('header_images'), 'full'); 13 ?> 14 <img src="<?php echo $icatchimage[0]; ?>" alt="<?php echo get_the_title(get_field('header_images')) ?>" /> 15<?php endif;?></a></li>

【get_the_terms:WordPress私的マニュアル】
https://elearn.jp/wpman/function/get_the_terms.html

【get_term_by() | Function | WordPress Developer Resources】
https://developer.wordpress.org/reference/functions/get_term_by/

投稿2018/01/01 12:41

kei344

総合スコア69398

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

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

退会済みユーザー

退会済みユーザー

2018/01/01 16:31

力を貸してくださりありがとうございました。 全部のコードをまだ見る力がなくお恥ずかしい限りですが、やりたかったことに関してうまく表示することができました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問