🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WordPress

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

PHP

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Q&A

解決済

3回答

1432閲覧

WPの全カテゴリー一覧に対応する画像をつけたい(2)

simoneco

総合スコア6

WordPress

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

PHP

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

0グッド

0クリップ

投稿2021/02/07 02:17

編集2021/02/07 02:22

同タイトルで未解決にもかかわらず、誤って解決済みにしてしまいましたので、
これまでの経緯も含めて、改めて質問させていただきます。↓

① WPの全カテゴリー一覧に対応する画像をつけたい(1)
(※画像は、Advanced Custom Fieldsでカテゴリーにfieldを追加)

誤っているコード↓

php

1<?php 2$args = array( 3'number' => all, 4'fields' => 'all', 5'orderby' => 'order' 6); 7$categoies = get_terms( "category", "fields=all&get=all" ); 8foreach($categoies as $category): 9?> 10<p><a href="<?php echo get_category_link($category->term_id); ?>"><?php echo $category->name;?></a></p> 11<img src="<?php echo $category->category_image; ?>" alt="<?php echo $category->name;?>"> 12<?php endforeach; ?>

② CHERRYさんからの回答-「ACF カテゴリー画像」のようなキーワードで検索すると例がたくさん検索されると思うのですが...
で、ご指摘の箇所の

<img src="<?php echo $category->category_image; ?>" alt="<?php echo $category->name;?>">

の部分に↓を入れましたが、上手くいきません。
<img src="<?php echo get_field('categry_image', 'category_'. $category->term_id); ?>" alt="<?php echo $category->name;?>">

(カスタムフィールドの設定項目の中で、返り値が画像URLなので、URL を取得できるような設定になっているようです。)

知識が浅く皆目雲をつかむような状態です。。

実は同HP内のfront-page.phpに下のような記述があり(一部抜粋)、
先頭の1件のカテゴリ名とその画像だけが表示されるのですが、これをどのようにアレンジすれば、すべてのカテゴリ名がカテゴリ画像付きで表示されるようになるのでしょうか。

php

1<?php 2$args = array( 3'fields' => 'all', 4'or' => 'id', 5'order' => 'DESC' 6); 7$categoies = get_terms( 'category', $args ); 8$category_id = $categoies[0]->term_id; 9$category_name = $categoies[0]->name; 10$category_image = get_field( 'category_image', 'category_'.$category_id ); 11$category_image_content = get_field( 'category_image_content', 'category_'.$category_id ); 12?> 13<h2><?php echo $category_name; ?></h2> 14<?php if ( !empty($category_image) ) : ?> 15<dt><a href="<?php echo $category_image; ?>" target="_blank"><img src="<?php echo $category_image; ?>" alt="<?php echo $category_name; ?>"></a></dt> 16<?php endif; ?>

要領を得ない質問と不手際お許しください。
何卒よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

ベストアンサー

get_termsの戻り値はタームオブジェクトの配列とあります。
https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_terms

つまり、要素番号0だけを指定したら1つしか参照出来なくて当然なのでループさせて参照します。

php

1$categoies = get_terms( 'category', $args ); 2forearch($categoies as $category){ 3 $category_id = $category->term_id; 4 $category_image = get_field( 'category_image', 'category_'.$category_id ); 5}

投稿2021/02/07 04:37

編集2021/02/07 07:47
yuki84web

総合スコア1857

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

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

simoneco

2021/02/07 05:37 編集

要素番号0を外し、foreachを下のように入れてみましたが、カテゴリ名の一覧は出力されますが、画像は出力されません。 なにぶん、知識がないもので、具体的にコードをどのように修正すればよいのかご教授いただけるとありがたいです。 <?php $args = array( 'fields' => 'all', 'or' => 'id', 'order' => 'DESC' ); $categoies = get_terms( 'category', $args ); $category_id = $categoies->term_id; $category_name = $categoies->name; $category_image = get_field( 'category_image', 'category_'.$category_id ); $category_image_content = get_field( 'category_image_content', 'category_'.$category_id ); foreach($categoies as $category): ?> <h2><?php echo $category_name; ?></h2> <?php if ( !empty($category_image) ) : ?> <dt><a href="<?php echo $category_image; ?>" target="_blank"><img src="<?php echo $category_image; ?>" alt="<?php echo $category_name; ?>"></a></dt> <?php endif; ?>
yuki84web

2021/02/07 07:42

ループで定義している$categoiesについてループ内で一切参照していないように見えますが…動いているらしいコードを見ると$category_imageはget_fieldでの取得に際に$category_idを指定しているようなので、foreach内なら$categoies->term_id;で取得出来るでしょう。知識としてはWordPressというよりPHPの基礎になります。
simoneco

2021/02/07 09:13 編集

>ループで定義している$categoiesについてループ内で一切参照していないように見えますが… ありがたいご指摘に感謝いたします。ご察しの通りど素人です。 最終行に<?php endforeach; ?>を追加し、 <h2><?php echo $category_name; ?></h2>を<h2><?php echo $category->name;?></h2> に変更して、カテゴリ名だけは一覧表示されました。 >foreach内なら$categoies->term_id;で取得出来るでしょう。 ということですが、具体的にどこに、どのように記述すればよいのでしょう。 下のように、修正してみましたが、画像はまったく表示されません。 <?php $args = array( 'fields' => 'all', 'or' => 'id', 'order' => 'DESC' ); $categoies = get_terms( 'category', $args ); $category_id = $categoies->term_id; $category_name = $categoies->name; $category_image_content = get_field( 'category_image_content', 'category_'.$category_id ); foreach($categoies as $category): ?> <h2><?php echo $category->name;?></h2> <?php $category_image = get_field('categry_image', 'category_'. $categories->term_id); ?> <?php if ( !empty($category_image) ) : ?> <dt><a href="<?php echo $category_image; ?>" target="_blank"><img src="<?php echo $category_image; ?>" alt="<?php echo $category_name; ?>"></a></dt> <?php endif; ?> <?php endforeach; ?> たいへん初歩的な内容で申し訳ありませんが、どうぞよろしくお願いいたします。
yuki84web

2021/02/08 10:20 編集

回答文に編集追記してますので、それを参考にしてください。get_field周辺の処理もforeach内です。
simoneco

2021/02/08 12:06 編集

教えていただいたことをヒントに 試行錯誤して、さきほどなんとか画像を表示させることができました。 大変お世話になりました。貴重なお時間を割いていただき、本当にありがとうございました。 <?php if( get_field('category_image', 'category_'. $category->term_id) ): ?> <img src="<?php the_field('category_image', 'category_'. $category->term_id); ?>" alt="<?php echo $category->name;?>"> <?php endif; ?>
guest

0

php

1<?php if( get_field('category_image', 'category_'. $category->term_id) ): ?> 2<img src="<?php the_field('category_image', 'category_'. $category->term_id); ?>" alt="<?php echo $category->name;?>"> 3<?php endif; ?>

投稿2021/02/08 12:05

simoneco

総合スコア6

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

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

0

<?php if( get_field('category_image', 'category_'. $category->term_id) ): ?> <img src="<?php the_field('category_image', 'category_'. $category->term_id); ?>" alt="<?php echo $category->name;?>"> <?php endif; ?>

投稿2021/02/08 11:59

simoneco

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問