WordPressのRSSにアイキャッチを追加 IFTTTでXに画像付き自動投稿する方法
はじめに
ブログを書いたら自動でX(旧Twitter)にシェアされると便利ですよね。
私も最初はIFTTTを使って「RSSから自動投稿」を設定しました。ところが最初に直面したのが 「画像が出ない」 という問題でした。
タイトルやURLは投稿されるのに、サムネイルが表示されず「File not found」とだけ出てしまう。これでは見栄えが悪く、クリック率も落ちてしまいます。
調べていくと、WordPressの標準RSSにはアイキャッチ画像の情報が含まれないことが原因だと分かりました。
今回はこの問題を解決するために、私自身が導入してうまくいった MU-plugin方式 を紹介します。

プラグインで解決する方法もありますが、今回はより確実で軽量な MU-plugin方式に絞って解説します。
なぜRSSに画像が出ないのか?
WordPress標準のRSSの仕様
WordPressの標準フィードは、記事のタイトル・本文・URLは出力します。
しかし、記事に設定した「アイキャッチ画像(サムネイル)」は含まれません。
IFTTTの仕組み
IFTTTはRSSフィードを読み取り、各項目をXに転送します。
画像は EntryImageUrl を参照しますが、WordPressのRSSにその情報が無いため、空欄になり「File not found」と表示されてしまうのです。

MU-plugin方式とは?
MU-plugin(Must Use Plugin)は、WordPressの wp-content/mu-plugins/ に置くだけで自動的に有効化される特別な仕組みです。
- 有効化操作が不要
- テーマ更新や通常のプラグイン更新の影響を受けない
- 軽量で安定して動作する
RSSにアイキャッチを追加する処理をMU-pluginとして書いておけば、一度設置すれば放置でOKになります。
実装手順
ステップ1: mu-pluginsフォルダを準備
サーバーの wp-content/ 内に mu-plugins フォルダを作成します。
もしすでに存在していれば、そのまま利用可能です。
ステップ2: PHPファイルを作成
featured-image-in-rss.php という名前のファイルを新規作成し、以下のコードを貼り付けます。
<?php
/**
* RSSにアイキャッチを追加するMU-plugin
*/
if (!defined('ABSPATH')) exit;
/* RSSにmedia名前空間を追加 */
add_action('rss2_ns', function () {
echo 'xmlns:media="http://search.yahoo.com/mrss/"' . "\n";
});
/* アイキャッチ → 本文1枚目 → サイトアイコン の順で取得 */
function my_get_post_image_url_for_feed($post_id, $size = 'full') {
$url = get_the_post_thumbnail_url($post_id, $size);
if ($url) return esc_url($url);
$content = get_post_field('post_content', $post_id);
if ($content && preg_match('/<img[^>]+src=["\']([^"\']+)["\']/i', $content, $m)) {
return esc_url($m[1]);
}
$site_icon_id = get_option('site_icon');
if ($site_icon_id) {
$icon = wp_get_attachment_image_src($site_icon_id, 'full');
if (!empty($icon[0])) return esc_url($icon[0]);
}
return '';
}
/* RSSの各itemに画像情報を追加 */
add_action('rss2_item', function () {
global $post;
if (empty($post) || empty($post->ID)) return;
$img = my_get_post_image_url_for_feed($post->ID, 'full');
if (!$img) return;
$mime = 'image/jpeg';
$ext = strtolower(pathinfo(parse_url($img, PHP_URL_PATH), PATHINFO_EXTENSION));
if ($ext === 'png') $mime = 'image/png';
elseif ($ext === 'gif') $mime = 'image/gif';
elseif ($ext === 'webp') $mime = 'image/webp';
echo '<media:content url="' . esc_url($img) . '" medium="image" type="' . esc_attr($mime) . '" />' . "\n";
echo '<enclosure url="' . esc_url($img) . '" length="0" type="' . esc_attr($mime) . '" />' . "\n";
});
/* 本文先頭にも<img>を差し込む(保険用) */
add_filter('the_content_feed', function ($content) {
global $post;
if (empty($post) || empty($post->ID)) return $content;
$img = my_get_post_image_url_for_feed($post->ID, 'full');
if (!$img) return $content;
return '<p><img src="' . esc_url($img) . '" alt="' . esc_attr(get_the_title($post)) . '"></p>' . "\n" . $content;
});ステップ3: WordPressの設定
- 「表示設定 → フィードの各投稿に」 → 全文を表示 を選択
- 記事ごとに必ずアイキャッチを設定
これで準備完了です。
動作確認
ブラウザで https://ドメイン名/feed/ を開きます。
各 <item> の中に <media:content> や <enclosure> が追加されていれば成功です。
- Trigger(トリガー): RSS → New feed item(Feed URLは
/feed/) - Action: Post a tweet with image
- Image URL:
{{EntryImageUrl}} - Tweet text:
{{EntryTitle}} | {{EntryUrl}}など
- Image URL:
Xにサムネイル付きで自動投稿されるかチェック
ブログを更新すると、Xでサムネイルがこの様に表示されます。
トラブルシューティング
- 画像が出ない
→ キャッシュプラグイン(WP Rocket / LiteSpeed / Cloudflare など)を削除またはクリアして再確認 - File not found が出る
→ サーバーのホットリンク防止設定を見直す - アイキャッチを付けていない記事
→ 本文1枚目の画像を代替として拾うようにしてある - コードが動いていない
→ MU-pluginファイルの場所や<?phpの記述を確認
まとめ
- WordPress標準のRSSにはアイキャッチが含まれないため、IFTTTで画像付き自動投稿ができない
- MU-plugin方式なら、一度設置すればテーマやプラグイン更新に左右されず安定して動作
- プラグインでも解決可能だが、今回は MU-plugin方式に絞って解説 しました。

これでブログの更新を自動で発信して、多くの人に知らせる自動化をしていきましょう!
