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

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

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

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

Q&A

解決済

1回答

413閲覧

Advanced Custom Fields 画像出力

yasu47

総合スコア7

WordPress

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

0グッド

0クリップ

投稿2022/04/22 07:29

wordpressを使い始めた初心者です。

いろんなサンプルをみながら。Advanced Custom Fields を使ってブラウザ上に表示をしています。

設定をして、テキスト情報はブラウザ上に出力されるのですが画像が出力されず困っています。
サンプルソースと設定情報を添付しますので、解決策についてアドバイスお願いします。
サンプルソースの  <!-- ここから画像出力対応 という所が、画像を出力させるために作った
コマンドではあります(こちらも、別なサンプルから引用したりしています)

イメージ説明

コード <?php $taxonomy_name = 'part'; // クソノミー スラッグ名 $post_type = 'results'; // カスタム投稿  スラッグ名 $args = array( 'orderby' => 'name', 'hierarchical' => false ); $taxonomys = get_terms( $taxonomy_name, $args); if(!is_wp_error($taxonomys) && count($taxonomys)): foreach($taxonomys as $taxonomy): $url = get_term_link($taxonomy->slug, $taxonomy_name); $tax_posts = get_posts( array( 'post_type' => $post_type, 'tax_query' => array( array( 'taxonomy' => $taxonomy_name, 'terms' => array( $taxonomy->slug ), 'field' => 'slug', 'include_children' => true, 'operator' => 'IN' ) ) )); if( $tax_posts ) { ?> <section> <h3><?php echo esc_html($taxonomy->name); ?></h3> <?php foreach($tax_posts as $tax_post): ?> <dl> <dt><?php echo get_the_title($tax_post->ID); ?></dt> <dd><?php echo $tax_post->{'txt'}; ?></dd> </dl> <!-- ここから画像出力対応 <p> <?php $img = get_field('itemfield'); $imgurl = wp_get_attachment_image_src($img, 'full'); if($imgurl){ ?> <img src="<?php echo $imgurl[0]; ?>" alt=""> <?php } ?> </p> --> <?php endforeach; wp_reset_postdata(); ?> </section> <?php } endforeach; endif; ?>

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

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

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

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

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

gogoweb_ikeda

2022/04/22 08:27

画像フィールドの返り値は画像IDになっていますか?
yasu47

2022/04/22 09:49

迅速な返信ありがとうございます。 申し訳ありませんが、 画像フィールドの戻り値は、どのように調べれば良いかご教授頂けませんでしょうか? よろしくお願いいたします。
yasu47

2022/04/24 06:19

返事が遅れてしまいました。 返り値のフォーマットは 画像配列 です。尚、「画像 配列」「画像 URL」「画像 ID」 それぞれ設定を変えましたが、画像は出力されませんでした。
guest

回答1

0

ベストアンサー

画像が、いろいろな画面を切り抜いてまとめていてわかりにくいので、どの画面の画像かをわかるように記載していただいたほうが良いと思います。


質問のコードでは、get_posts() で投稿を取得して、foreach で投稿ループを回されていますが、setup_postdata() が実行されていないので、ループ内で投稿情報がグローバル変数に設定されていません。

そのため、

$img = get_field('itemfield');

で、画像を取得していますが投稿IDを省略した get_field('itemfield'); の場合、グローバル変数から「投稿ID」を取得しますが質問のコードではグローバル変数から投稿IDを取得できないため画像が取得できないのではないでしょうか。

その場合、get_field($selector, [$post_id], [$format_value]); の書式のように、第二パラメータに投稿IDを指定して実行してください。

例:

$img = get_field('itemfield', $tax_post->ID);

別の方法としては、

<?php foreach($tax_posts as $tax_post): ?>

ではなく

<?php global $post; foreach($tax_posts as $post ) : setup_postdata( $post ); ?>

のように $tax_post の代わりに グローバル変数 $post を用いてください。

投稿2022/04/24 08:30

CHERRY

総合スコア25171

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

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

yasu47

2022/04/24 09:17

無事目的とすることができました。 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問