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

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

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

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

PHP

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

Q&A

解決済

1回答

2541閲覧

RSSの取得先URLをカスタムフィールドを使用し任意で変更したい

sute1989

総合スコア12

WordPress

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

PHP

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

0グッド

0クリップ

投稿2016/03/03 05:36

編集2016/03/03 05:37

投稿ページで、それぞれ取得するRSS先を変更する必要があるため、カスタムフィールドに入力したURLをfetch_feed内で読み込んで使用したいと思っています。

<?php include_once(ABSPATH . WPINC . '/feed.php'); $sample01 = get_post_meta($post->ID , 'アドレス1' ,true); $sample02 = get_post_meta($post->ID , 'アドレス2' ,true); $sample03 = get_post_meta($post->ID , 'アドレス3' ,true); $rss = fetch_feed(array($sample01,$sample02,$sample03)); if (!is_wp_error( $rss ) ) : $maxitems = $rss->get_item_quantity(3); $rss_items = $rss->get_items(0, $maxitems); endif; ?> <?php if ($maxitems == 0) echo '<li>記事はありません。</li>'; else foreach ( $rss_items as $item ) : ?> <a href='<?php echo $item->get_permalink(); ?>'><?php echo $item->get_title(); ?></a> <?php $first_img = ''; if ( preg_match( '/<img.+?src=[\'"]([^\'"]+?)[\'"].*?>/msi', $item->get_content(), $matches ) ) { $first_img = $matches[1]; } ?> <?php if ( !empty( $first_img ) ) : ?> <a href='<?php echo $item->get_permalink(); ?>'><img src="<?php echo esc_attr( $first_img ); ?>" alt=""></a> <?php endif; ?> <?php endforeach; ?>

上記のように記述したところ、カスタムフィールドが埋まっている場合はRSSが表示されるようになったのですが、空欄がある場合は「記事はありません」と表示されてしまいます。
投稿ごとに取得したいURLの件数が変わるので、空欄があっても表示できるようにしたいのですが・・・

どなたか解決法が分かる方がいらっしゃったら、知恵をお貸しください。
また、記述でおかしな所があったらご指摘頂けたらと思います。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

include_once~fetch_feedまでをこのように変えるのはどうでしょうか?
get_post_metaはsingle(最後のパラメータ)がtrueの場合、返す値がない場合は空の文字列を返すそうなので、それで判断します。
全部空だった時の処理も入れたほうがいいと思いますが、とりあえず。

PHP

1include_once(ABSPATH . WPINC . '/feed.php'); 2$samples = array(); 3for($i=1; $i<=3; $i++) { 4 $sample = get_post_meta($post->ID , 'アドレス'.$i ,true); 5 if (!empty($sample)) { 6 $samples[] = $sample; 7 } 8} 9$rss = fetch_feed($samples);

投稿2016/03/03 06:01

shi_ue

総合スコア4437

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

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

sute1989

2016/03/03 07:40

希望していた挙動になりました!ありがとうございます! 記述の方法、大変勉強になりました。感謝いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問