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

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

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

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

Q&A

解決済

2回答

4442閲覧

WordPressでカスタム投稿のRSSにアイキャッチ画像を表示させたい

yusukesasaki

総合スコア28

WordPress

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

0グッド

1クリップ

投稿2017/04/02 09:55

環境: WordPress 4.7.3

WordPressでカスタム投稿タイプを作成し、下記を参考にカスタム投稿のRSSフィードを作成している状態です。

[WP]WordPress でカスタム投稿タイプのRSS を配信する方法

function mysite_feed_request($vars) { if ( isset( $vars['feed'] ) && !isset( $vars['post_type'] ) ) { $vars['post_type'] = array( 'post', '投稿タイプ名1', '投稿タイプ名2', '投稿タイプ名3' ); } return $vars; } add_filter( 'request', 'mysite_feed_request' );

パーマリンクを設定している為、フィードは下記で取得しています。

http://ドメイン/feed/?post_type=投稿タイプ名

RSSにアイキャッチ画像を表示させたいのですが可能でしょうか。
下記のようにするとcontentの中に表示させることは可能なようですが、contentに表示させる形ではなく、アイキャッチ画像のみを取得したいのです。

function rss_post_thumbnail( $content) { global $post; if (has_post_thumbnail( $post->ID)) { $content = '<p>' . get_the_post_thumbnail($post->ID) .'</p>' . $content; } return $content; } add_filter( 'the_excerpt_rss', 'rss_post_thumbnail'); add_filter( 'the_content_feed', 'rss_post_thumbnail');

下記の情報が一番近いかと思うのですが、?feed=newとしてもパーマリンクが影響しているのか、feedが表示されません(ERR_INVALID_RESPONSEになります)

【WordPress】標準のRSSをカスタマイズして出力する

/* * 作成した独自RSSテンプレートを読み込む */ function do_feed_new() { load_template( get_template_directory() . '/feeds/feed-new.php'); } //独自RSSテンプレート呼び出し用アクションフックを追加 add_action('do_feed_new', 'do_feed_new');
http://sample_url/?feed=new

なにかいい方法はないでしょうか。

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

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

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

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

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

kei344

2017/04/02 10:14

「contentに表示させる形ではなく、アイキャッチ画像のみを取得したい」とは何を使って取得するのでしょうか。RSSリーダーでしょうか。別プログラムでしょうか。
yusukesasaki

2017/04/02 10:16

RSSの取得はPHPのsimplexml_load_fileを使用しています。
guest

回答2

0

ベストアンサー

単純に画像以外のHTML文字列が不要なのであれば、下記のようにすれば良いと思います。

PHP

1function rss_post_thumbnail( $content) { 2 global $post; 3 if (has_post_thumbnail( $post->ID)) { 4 $content = get_the_post_thumbnail($post->ID); 5 } else { 6 $content = ''; 7 } 8 return $content; 9}

URLのみを得られるようにするには下記記事を参照してください。

【wp_get_attachment_image_src:WordPress私的マニュアル】
https://elearn.jp/wpman/function/wp_get_attachment_image_src.html

【WordPressでアイキャッチ画像のURLだけを取得してイメージタグに属性を追加する方法 | それからデザイン スタッフブログ】
http://sole-color-blog.com/blog/php/60/


もし、本文以外の箇所に画像を追記するのであれば enclosure要素かな、と思います。コードを読むと 'enclosure' というカスタムフィールドの値を入れると出力されるようです。

【rss_enclosure() | Function | WordPress Developer Resources】
https://developer.wordpress.org/reference/functions/rss_enclosure/


上記方法で出来ない場合は enclosure要素を自前で追記することは出来ると思います。do_action( 'rss2_item' ); がRSSの箇所で実行されているので、add_action(); でフックすればよいと思います。

【RSS 2.0 Specification (version 2.0.11)】
http://www.rssboard.org/rss-specification#ltenclosuregtSubelementOfLtitemgt


追記:

ERR_INVALID_RESPONSEについて、古いですが下記のような情報がありました。他のブラウザで一度確認してみてはいかがでしょうか。

【Google Chromeでエラー 320「このウェブサイトはご利用いただけません。」: point of view point】
http://pointofviewpoint.air-nifty.com/blog/2008/09/google-chrome-a.html

【[SOLVED] Error ERR_INVALID_RESPONSE Code Problem】
http://www.techinpost.com/solved-error-err_invalid_response-code-problem

投稿2017/04/02 11:24

編集2017/04/02 11:26
kei344

総合スコア69407

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

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

yusukesasaki

2017/04/03 12:39

ご回答ありがとうございます。 とりあえず1つ目にご提示いただいた方法で、 $content にアイキャッチのURLのみを入れることには成功しました。 もし可能であれば > もし、本文以外の箇所に画像を追記するのであれば enclosure要素かな、と思います。コードを読むと 'enclosure' というカスタムフィールドの値を入れると出力されるようです。 この部分について詳しく教えていただけると助かります。 リンク先を見ましたが理解できなくて…。申し訳ありません。
kei344

2017/04/03 14:33

記事投稿画面でカスタムフィールド「enclosure」を追加し、「値」フィールドに 画像ファイルの完全な URL を貼り付けてください。
yusukesasaki

2017/04/10 04:57

すみません、返答が遅れました。カスタムフィールド「enclosure」を追加し、URLを入れることでRSSに表示されるようになりました。しかし可能であれば自動で取得したいので、 > 上記方法で出来ない場合は enclosure要素を自前で追記することは出来ると思います。do_action( 'rss2_item' ); がRSSの箇所で実行されているので、add_action(); でフックすればよいと思います。 こちらで自動取得はできますか? 何度も質問ばかりで申し訳ありません。
kei344

2017/04/10 05:01

「自動取得」とは?
yusukesasaki

2017/04/10 12:10

記事毎にURLを入力するのが大変なので、アイキャッチ画像のURLがenclosureに入るようにしたいです。
kei344

2017/04/10 12:42

提示したもの(add_action/wp_get_attachment_image_src/RSS仕様)で出来ると思います。
yusukesasaki

2017/05/11 08:27

遅くなりましたが、 > 提示したもの(add_action/wp_get_attachment_image_src/RSS仕様)で出来ると思います。 現段階ではこちらを理解する能力がありませんでしたので、別途学習して理解したいと思います。 ありがとうございました。
guest

0

ご質問内容に則している分かりませんが、以前作ったものです。
今も使えるかなぁ

function.php

1function rss_post_thumbnail( $content ) { 2 global $post; 3 if ( has_post_thumbnail( $post->ID ) ) { 4 $content = '<p>' . get_the_post_thumbnail( $post->ID ) . '</p>' . $content; 5 } 6 return $content; 7} 8 9add_filter( 'the_excerpt_rss', 'rss_post_thumbnail' ); 10add_filter( 'the_content_feed', 'rss_post_thumbnail' );

投稿2017/04/02 11:23

drunkdoll

総合スコア128

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

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

yusukesasaki

2017/04/03 12:35

ご回答ありがとうございます。 こちらは…、質問の中にあるものと同じようですね (^_^;)
drunkdoll

2017/04/03 13:25

あら・・・すみません
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問