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

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

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

CMS(Content Management System)は複数のユーザーでコンテンツを編集することが可能なWebサイトの管理/構築用のプラットフォームを指します。また、会社単位で運用管理するものはECMと呼びます。

WordPress

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

PHP

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

Q&A

解決済

1回答

1143閲覧

ワードプレスにて タクソノミーの親子関係の階層を維持したリストを カスタムフィールドで登録したアイキャッチ画像も含めて表示させたいが、画像のみうまく表示されない。

rirakumama

総合スコア5

CMS

CMS(Content Management System)は複数のユーザーでコンテンツを編集することが可能なWebサイトの管理/構築用のプラットフォームを指します。また、会社単位で運用管理するものはECMと呼びます。

WordPress

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

PHP

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

0グッド

0クリップ

投稿2020/01/11 00:48

編集2020/01/11 01:17

前提・実現したいこと

ワードプレスにて
タクソノミーの親子関係の階層を維持したリストを
カスタムフィールドで登録したアイキャッチ画像も含めて表示させたいです。

下記のように表示させたいです。

html

1<ul> 2 <li> 3 親タームA 4 <ul class="children"> 5 <li>子タームA-1 説明文 アイキャッチ画像</li> 6 <li>子タームA-2 説明文 アイキャッチ画像</li> 7 <li>子タームA-3 説明文 アイキャッチ画像</li> 8 </li> 9 <li> 10 親タームB 11 <ul class="children"> 12 <li>子タームB-1 説明文 アイキャッチ画像</li> 13 <li>子タームB-2< 説明文 アイキャッチ画像/li> 14 </li> 15</ul>

該当のソースコード

html

1<?php 2//投稿タイプ item 3//タクソノミースラッグ item_cate 4//画像のカスタムフィールド名 cate-img 5?> 6 7 <?php 8 $my_tax = 'item_cate'; //取得したいタクソノミー名 9 $parent_terms = get_terms( $my_tax, array('hide_empty' => false, 'parent' => 0) ); //第一階層のタームだけ取得 10 if ( !empty( $parent_terms ) ) : 11 echo '<ul>'; 12 13 //第1ループ 14 foreach ( $parent_terms as $pt ) : 15 $pt_id = $pt->term_id; 16 $pt_name = $pt->name; 17 $pt_url = get_term_link($pt); 18 19 echo '<h2 class="subtit">' .$pt_name. '</h2>'; 20 21 ?> 22 23 <?php 24 $child_terms = get_terms( $my_tax, array('hide_empty' => false, 'parent' => $pt_id) ); 25 if ( !empty( $child_terms ) ) : 26 echo '<ul class="child">'; 27 28 //第2ループ 29 foreach ( $child_terms as $ct ) : 30 $ct_id = $ct->term_id; 31 $ct_name = $ct->name; 32 $ct_url = get_term_link($ct); 33 $ct_descripition =$ct->description; 34 35 $term_idsp = 'item_cate_'.$ct_id ; //カスタムフィールドを取得するのに必要なtermのIDは「taxonomyname_ + termID」 36 $photo = get_field('cate-img',$term_idsp); 37 $photosp = wp_get_attachment_image_src($photo, 'full'); 38 ?> 39 <li> 40 <a href="<?php echo $ct_url; ?>"><?php echo $ct_name; ?></a> 41 <img src="<?php echo $photosp[0]; ?>" alt=""> 42 <?php echo '<div class="setsumei">'.nl2br($ct_descripition).'</div>'; ?> 43 44 </li> 45 <?php 46 endforeach; //End : 第2ループ 47 echo '</ul>'; 48 endif; 49 ?> 50 </li> 51 <?php 52 endforeach; //End : 第1ループ 53 echo '</ul>'; 54 endif; 55 ?>

試したこと

上記コードでは、画像のみ表示されません。
ブラウザでみると画像の部分が
<img src="unknown" alt="">
とはきだされています。
昨日から何時間も調べたり、していますが
お手上げ状態です。
どうか詳しい方、ご教授いただけなけないでしょうか?
宜しくお願い致します。

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

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

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

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

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

m.ts10806

2020/01/11 01:05

タグ「Word」になってます。 またコードはマークダウンのcode機能を利用してご提示ください
rirakumama

2020/01/11 01:18

すみません、ご指摘ありがとうございます。 修正致しました。
guest

回答1

0

ベストアンサー

$photo = get_field('cate-img',$term_idsp);
$photosp = wp_get_attachment_image_src($photo, 'full');

get_field() をお使いなので、Advanced Custom Fields をお使いと思いますが、カスタムフィールドの設定はどうなっていますか?
具体的には、Return Format の設定は正しいでしょうか?
Image type を見ると記載がありますが、ID , URL, Array のどれに設定されていますか?

質問のコードは、wp_get_attachment_image_src を使っていますが、この関数は、ID が与えられることを期待しているようですが、ID 以外を与えると質問に記載されている内容になると思われます。

投稿2020/01/11 01:19

編集2020/01/11 01:22
CHERRY

総合スコア25171

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

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

rirakumama

2020/01/11 01:21

すみません、情報不足で、 ご指摘の通り、Advanced Custom Fieldsを使用しています。 確認しましたが、画像の返り値のフォーマットは画像 IDにチェックがはいっております。
CHERRY

2020/01/11 01:24

では、デバッグして原因を探す必要がありますね。 変数 $photoと $photosp には、何が入っていますか? 正しい値が取れていますか?
rirakumama

2020/01/11 01:33 編集

ご回答ありがとうございます。 echo '$term_idspは'.$term_idsp.'<br>'; echo '$photoは'.$photo.'<br>'; echo '$photospは'.$photosp; とやってみたところ $term_idspはitem_cate_19 $photoは $photospは と表示されました。 $term_idspはちゃんと値がとれてるみたいですが、 変数 $photoと $photosp にはなにもはいってないということになるんでしょうか。。。
rirakumama

2020/01/11 02:02

ありがとうございます! 表示できました! すぐ回答をわかりやすくださって、感謝です。 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問