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

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

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

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

PHP

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

Q&A

1回答

1392閲覧

rssで取得した投稿者名ごとにアイコンを変えて表示するには

suzushiro

総合スコア10

WordPress

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

PHP

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

0グッド

1クリップ

投稿2019/08/27 08:29

編集2019/08/29 00:50

現在制作中のWordpressサイトのトップページに
画像のようにrssにて投稿記事一覧を表示しようとしています。

イメージ説明
記事左のアイコン部分について、現在すべて仮の同じアイコンを並べたものですが
こちらのアイコンを、投稿者名別に分岐を作り、投稿者ごとにそれぞれ決まったアイコンを
表示したいと考えています。

そこで、日本語の投稿者名ごとにあらかじめ分岐の設定を行い、
これを以下のrss取得コードに当てはめればと思った次第です。

当方PHPの知識もないため、
具体的なというかそのものの分岐コード及びrss取得コードへのコードの追加について
ご教授いただきたく思います。

拙い質問で申し訳ございません。
よろしくお願いいたします。

追記:
不明点としては、別サイトのrssから読み取った投稿者名(日本語表記)からそれぞれあらかじめ決められたアイコン画像への紐付けするためのコードの記述です。これが条件分岐に当たるものかもわかっておらず。さらにそのアイコン画像を該当記事のタイトル前に表示するためにrss取得コードへの組み込み方法です。
PHPについての記述のルールはまったく知識外となっています。

<?php include_once ABSPATH . WPINC . '/feed.php'; $feed = fetch_feed('http://oshimax.jp/feed/?post_type=groupsinfo'); if (is_wp_error($feed)) { $maxitems = 0; } else { $maxitems = $feed->get_item_quantity(4); $items = $feed->get_items(0, $maxitems); } ?> <h4 class="content-title">新着情報</h4> <?php if ($maxitems): ?> <div class="news"> <?php foreach ($items as $item): ?> <div class="rss-wrap"> <div class="circle"><span><img src="<?php bloginfo('template_directory');?>/img/user_sankusu.png" /></span></div> // こちらが現在仮で入っているアイコン部分 <div class="rss-text"> <p class="date"><?php echo $item->get_date('Y/m/d'); ?></p> <p class="title"><a href="<?php echo $item->get_permalink(); ?>" target="_blank"> <?php echo mb_strimwidth($item->get_title(), 0, 70, '…'); ?></a></p> </div> </div> <?php endforeach; ?> </div> <?php else: ?> <?php endif; ?>

条件分岐の想像するコード

<?php elseif(投稿者の日本語名-サンクス高田): ?> <img src="<?php echo get_template_directory_uri(); ?>/img/group_icon/sankusu.png"> <?php endif; ?> <?php elseif(投稿者の日本語名-みんなでいきる): ?> <img src="<?php echo get_template_directory_uri(); ?>/img/group_icon/minnadeikiru.png"> <?php endif; ?> <?php elseif(投稿者の日本語名-武蔵野酒造): ?> <img src="<?php echo get_template_directory_uri(); ?>/img/group_icon/musashino.png"> <?php endif; ?> <?php elseif(投稿者の日本語名-井手塾): ?> <img src="<?php echo get_template_directory_uri(); ?>/img/group_icon/idejuku.png"> <?php endif; ?> ↓必要分を記載

php

1object(SimplePie_Item)#4596 (3) { ["feed"]=> object(SimplePie)#4561 (28) { ["data"]=> array(6) { ["child"]=> array(1) { [""]=> array(1) { ["rss"]=> array(1) { [0]=> array(6) { ["data"]=> string(3) " " ["attribs"]=> array(1) { [""]=> array(1) { ["version"]=> string(3) "2.0" } } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" ["child"]=> array(1) { [""]=> array(1) { ["channel"]=> array(1) { [0]=> array(6) { ["data"]=> string(319) " " ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" ["child"]=> array(3) { [""]=> array(7) { ["title"]=> array(1) { [0]=> array(5) { ["data"]=> string(40) "各社からのお知らせ – OSHIMAX!" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["link"]=> array(1) { [0]=> array(5) { ["data"]=> string(17) "http://oshimax.jp&quot; ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["description"]=> array(1) { [0]=> array(5) { ["data"]=> string(27) "Just another WordPress site" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["lastBuildDate"]=> array(1) { [0]=> array(5) { ["data"]=> string(31) "Tue, 27 Aug 2019 04:11:06 +0900" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["language"]=> array(1) { [0]=> array(5) { ["data"]=> string(2) "ja" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["generator"]=> array(1) { [0]=> array(5) { ["data"]=> string(30) "https://wordpress.org/?v=4.9.1&quot; ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["item"]=> array(100) { [0]=> array(6) { ["data"]=> string(39) " " ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" ["child"]=> array(5) { [""]=> array(6) { ["title"]=> array(1) { [0]=> array(5) { ["data"]=> string(90) "「うみまち茶屋」に行ってきました★みんなのリハビリセンター★" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["link"]=> array(1) { [0]=> array(5) { ["data"]=> string(42) "http://oshimax.jp/archives/groupsinfo/8234&quot; ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["comments"]=> array(1) { [0]=> array(5) { ["data"]=> string(51) "http://oshimax.jp/archives/groupsinfo/8234#comments&quot; ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["pubDate"]=> array(1) { [0]=> array(5) { ["data"]=> string(31) "Mon, 26 Aug 2019 10:10:20 +0000" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["guid"]=> array(1) { [0]=> array(5) { ["data"]=> string(46) "http://oshimax.jp/?post_type=groupsinfo&amp;p=8234&quot; ["attribs"]=> array(1) { [""]=> array(1) { ["isPermaLink"]=> string(5) "false" } } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["description"]=> array(1) { [0]=> array(5) { ["data"]=> string(324) "8月23日(金) 大潟区で実施されている「うみまち茶屋」に 講師として参加してきました!! うみまち茶屋とは・・・大潟区の地域包括支援センターが主催で 認知症者や家族、地域の方々を対象としたカフェスタイルの交流場所です […]" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } } ["http://purl.org/dc/elements/1.1/&quot;]=&gt; array(1) { ["creator"]=> array(1) { [0]=> array(5) { ["data"]=> string(21) "みんなでいきる" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } } ["http://purl.org/rss/1.0/modules/content/&quot;]=&gt; array(1) { ["encoded"]=> array(1) { [0]=> array(5) { ["data"]=> string(4907) "

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

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

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

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

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

m.ts10806

2019/08/27 08:31

投稿者名とアイコンの紐づけ例を提示いただけますか?
suzushiro

2019/08/27 08:44

例として、会社名ですが「みんなでいきる」の投稿にminnadeikiru.pngを、「サンクス高田」にsankusu.pngを紐付けて表示させるといったイメージです。
m.ts10806

2019/08/27 08:47

んー。全角半角、大文字小文字ですらプログラムからしたら別のものですから、 画像名も「rssから取得できて、且つ、半角英数で、且つ、一意のもの」をつけないとかなり難しいと思います。
suzushiro

2019/08/27 08:54

情報不足でしたが、rss取得先のサイト(Wordpress)も自分で管理していまして、すべての会社名は把握できている状態です。ですので不明な投稿者名はないという前提です。
kei344

2019/08/27 14:42

ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが回答が望めると思います。
guest

回答1

0

データベース上にファイル名になるような情報を持つのが望ましいです。
要は「対応付け」ですね。この名前にはこのファイル名 という対応付け。

下記は配列の例ですが、こういう感じの対応付けがあればifを何個も書かなくて良くなります。

※WordPress利用者ではないので未検証コードです

php

1<?php 2$icons_set = [ 3 'サンクス高田'=>'sankusu.png', 4 'みんなでいきる'=>'minnadeikiru.png', 5 '武蔵野酒造'=>'musashino.png', 6]; 7?> 8 9//foreachのところ中略 10 11<?php if(array_key_exists($item->name,$icons) && file_exists(bloginfo('template_directory').'/img/group_icon/'.$icons[$item->name])): ?> 12 <img src="<?=get_template_directory_uri(); ?>/img/group_icon/<?=$icons[$item->name]?>"> 13<?php endif; ?> 14

投稿2019/08/28 01:06

m.ts10806

総合スコア80850

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

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

m.ts10806

2019/08/28 01:09

会社名が変わったらコードも変更しなければならないので、RSS取得時に一意(重複しない情報)を持たせておき、それをファイル名にするとか、間違いなく、変更にも強い対応付けが必要に思います。
suzushiro

2019/08/28 06:35

m.ts10806様 詳細なご回答を頂き、ありがとうございます。 いただきましたコードを試行しようとしたのですが、そもそもrssの投稿者名の取得ができず現在頓挫中です。プラグインを使うと投稿者名は表示できるのですが、今回のコードをrss表示コード内に組み込むことがより難しくなるといった状況です。もう少し情報収集を行ってみます。
m.ts10806

2019/08/28 06:52

コード内にあるfeedですかね。 dc:creatorの項にあるのは投稿者名ではないですか?
suzushiro

2019/08/28 08:28

feed内のdc:creator項まではわかったのですが、これを取得するPHPコードの記述がわからない状態でして。 <?php echo $item->get_date('Y/m/d'); ?> や <?php echo $item->get_permalink(); ?> があるので dc:creatorを当てはめようと考えましたが、get_dc:creatorでは動きませんでした。
m.ts10806

2019/08/28 08:36

>get_dc:creatorでは動きませんでした。 php的に文法違反だからと思います。 foreachの中で var_dump($item); とすれば利用できる値が分かるので、確かめてみてください(その結果を質問に追記してもらえると助かります)
suzushiro

2019/08/28 09:45

以下のような表示となりました。 この後に該当の記事全文及びそのあとにすべての記事が表示されていました。 object(SimplePie_Item)#4596 (3) { ["feed"]=> object(SimplePie)#4561 (28) { ["data"]=> array(6) { ["child"]=> array(1) { [""]=> array(1) { ["rss"]=> array(1) { [0]=> array(6) { ["data"]=> string(3) " " ["attribs"]=> array(1) { [""]=> array(1) { ["version"]=> string(3) "2.0" } } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" ["child"]=> array(1) { [""]=> array(1) { ["channel"]=> array(1) { [0]=> array(6) { ["data"]=> string(319) " " ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" ["child"]=> array(3) { [""]=> array(7) { ["title"]=> array(1) { [0]=> array(5) { ["data"]=> string(40) "各社からのお知らせ – OSHIMAX!" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["link"]=> array(1) { [0]=> array(5) { ["data"]=> string(17) "http://oshimax.jp" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["description"]=> array(1) { [0]=> array(5) { ["data"]=> string(27) "Just another WordPress site" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["lastBuildDate"]=> array(1) { [0]=> array(5) { ["data"]=> string(31) "Tue, 27 Aug 2019 04:11:06 +0900" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["language"]=> array(1) { [0]=> array(5) { ["data"]=> string(2) "ja" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["generator"]=> array(1) { [0]=> array(5) { ["data"]=> string(30) "https://wordpress.org/?v=4.9.1" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["item"]=> array(100) { [0]=> array(6) { ["data"]=> string(39) " " ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" ["child"]=> array(5) { [""]=> array(6) { ["title"]=> array(1) { [0]=> array(5) { ["data"]=> string(90) "「うみまち茶屋」に行ってきました★みんなのリハビリセンター★" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["link"]=> array(1) { [0]=> array(5) { ["data"]=> string(42) "http://oshimax.jp/archives/groupsinfo/8234" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["comments"]=> array(1) { [0]=> array(5) { ["data"]=> string(51) "http://oshimax.jp/archives/groupsinfo/8234#comments" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["pubDate"]=> array(1) { [0]=> array(5) { ["data"]=> string(31) "Mon, 26 Aug 2019 10:10:20 +0000" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["guid"]=> array(1) { [0]=> array(5) { ["data"]=> string(46) "http://oshimax.jp/?post_type=groupsinfo&p=8234" ["attribs"]=> array(1) { [""]=> array(1) { ["isPermaLink"]=> string(5) "false" } } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } ["description"]=> array(1) { [0]=> array(5) { ["data"]=> string(324) "8月23日(金) 大潟区で実施されている「うみまち茶屋」に 講師として参加してきました!! うみまち茶屋とは・・・大潟区の地域包括支援センターが主催で 認知症者や家族、地域の方々を対象としたカフェスタイルの交流場所です […]" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } } ["http://purl.org/dc/elements/1.1/"]=> array(1) { ["creator"]=> array(1) { [0]=> array(5) { ["data"]=> string(21) "みんなでいきる" ["attribs"]=> array(0) { } ["xml_base"]=> string(0) "" ["xml_base_explicit"]=> bool(false) ["xml_lang"]=> string(0) "" } } } ["http://purl.org/rss/1.0/modules/content/"]=> array(1) { ["encoded"]=> array(1) { [0]=> array(5) { ["data"]=> string(4907) "
m.ts10806

2019/08/28 14:00

その結果を質問に追記してもらえると助かります ここに直に貼られてもHTMLエスケープかかりますし、 マークダウンで提示いただいたほうが見やすくなりますので。
suzushiro

2019/08/29 00:56

申し訳ありません。 質問に追記にて記載いたしました。 よろしくお願いいたします。
m.ts10806

2019/08/29 01:31

あれ、本当に改行なかったんですね。了解です・・
m.ts10806

2019/08/29 01:52

念のため自身の環境にfeed.phpを入れて確認しました。 下記で取れます。 $item->{'dc:creator'} 記号などを含む(変数に使えない文字列が入っている)場合は{}で囲ってキーを指定します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問