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

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

ただいまの
回答率

90.50%

  • WordPress

    7214questions

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

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

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 378
退会済みユーザー

退会済みユーザー

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

前提・実現したいこと

  1. カスタム投稿タイプAuthorにACFのフィールドタイプ【タクソノミー】を設置
  2. 【タクソノミー】に関してはカスタム投稿タイプArticleのタームを複数選択
  3. タームのリンクと、タクソノミーに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; ?>


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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

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

<li><a href="<?php echo get_term_link( $term ); ?>"><?php $ctm = get_post_meta($post->ID, 'header_images', true);?>
<?php if(empty($ctm)):?><!-- // なぜ$post->ID の 'header_images' を基準に分岐しているのかが意味がわからない。$termの画像を出すのが主目的なのでは? -->
    <?php
    $term_sp = get_the_terms( $post->ID, 'articlecat' );     // get_the_termsは当該記事に所属するterm情報を配列で返すのでなぜ使っているかがわからない。$termにidが入っているなら、get_term_by( 'id', $term, 'articlecat' )じゃね?
    $term_idsp = 'articlecat_'.$term_id;             // どこから$term_idが出てきたんだろう。100歩譲って「$term_sp[0]->term_id」だろうな、と思う。get_term_byを使った場合「$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_name; ?>"><!-- // $term_name はどこから来た?get_term_byを使った場合「$term_sp->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>

【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/02 01:31

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

    キャンセル

+1

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/30 02:40

    そこはわかってるんで、発生している問題として書いています。

    キャンセル

  • 2017/12/30 12:09

    なんか高圧的ですね。

    >発生している問題として書いています。
    の意味が分かりませんが、では$termsの中身は何ですか?

    キャンセル

  • 2018/01/01 21:06 編集

    高圧的に感じさせてしまったのであれば謝罪しますが、

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

    と質問書かせていただいているのですが読まれているのでしょうか。
    逆引き含め書籍を通して構築できるのですが、それ以上のチャレンジをしたいと考えています。
    なるだけ自分で解決をしたいのですがどうしてもわからない場合利用させていただいている状況です。
    コードもいじくりまわした結果よりも初期解決できなかったコードを書いているのですが・・・

    >では$termsの中身は何ですか?
    $terms = get_field('author_article_list');
    ではないんですか?

    キャンセル

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

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • WordPress

    7214questions

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