MENU

WordPress画像の親投稿とアイキャッチ

当ページのリンクには広告(PR)が含まれていることがあります。
WordPress画像の親投稿とアイキャッチ。画像のID、二つの関係を区別、親投稿と表示先の処理例。

画像をある記事へアップロードしたのに、アイキャッチが変わらない。逆に、アイキャッチとして表示されている画像が「未添付」に見える。この2つは、WordPressで同じ関係を表しているとは限りません。

メディア側のpostは関連付けられた投稿、記事側のfeatured_mediaはアイキャッチのメディアIDです。画像の使われ方を点検するときは、親投稿とアイキャッチを分けて確認します。未添付という表示だけを根拠に、画像を削除しないようにしてください。

目次

二つのIDが指す方向

架空の記事42とメディア90を考えます。記事のfeatured_mediaが90なら、その記事はメディア90をアイキャッチとして参照しています。一方、メディア90のpostが0でも、そのことだけでは記事42で使われていないとは言えません。

スクロールできます
取得するもの 見る項目 分かること
記事 featured_media アイキャッチとして選んだメディアID
メディア post メディアに関連付けられた投稿ID
記事本文 content 本文中の画像やリンクとしての利用

画像を取得する窓口は/wp-json/wp/v2/media/90、記事は/wp-json/wp/v2/posts/42です。画像のpostを読むことと、記事のfeatured_mediaを読むことは、別々の照合になります。

保存した一覧から対応表を作る

次は取得済みデータを想定した、架空の配列だけの例です。投稿42と43が同じ画像90をアイキャッチに使い、画像91は本文などで使われているか未確認という状態を表します。

def media_usage(posts, media_items):
    featured_by = {}
    for post in posts:
        media_id = post.get("featured_media", 0)
        if media_id:
            featured_by.setdefault(media_id, []).append(post["id"])
    rows = []
    for item in media_items:
        rows.append({
            "media_id": item["id"],
            "parent_post": item.get("post", 0),
            "featured_by": featured_by.get(item["id"], []),
        })
    return rows

posts = [
    {"id": 42, "featured_media": 90},
    {"id": 43, "featured_media": 90},
]
media_items = [{"id": 90, "post": 0}, {"id": 91, "post": 42}]
print(media_usage(posts, media_items))

画像90のparent_postは0ですが、featured_byは[42, 43]になります。画像91は親投稿42を持ち、アイキャッチとして参照する記事は、この入力の範囲では見つかりません。どちらも削除してよいという結果ではありません。

空の一覧から判断しない

featured_byが空なら、最初に渡した記事一覧の範囲を確認します。公開記事しか取っていなければ、下書きや予約記事の参照は含まれません。ページ分割で一部しか取得していない可能性もあります。取得範囲が不足した対応表を、サイト全体の利用状況に読み替えないことが必要です。

また、記事本文に画像URLを直接書いた場合や、テーマの設定、ブロック、外部のページから参照された場合は、このコードでは分かりません。メディアIDだけでなくURLで使われる場面もあるため、ID一覧だけで完全な未使用判定をする設計にはしません。

点検後に見る公開ページ

アイキャッチの設定を確かめるときは、APIのIDに加えて、実際の記事ページや記事一覧の表示も見ます。キャッシュやテーマの表示設定によって、API上の値と見えている画像の確認が別になることがあります。

差し替えを行う場合は、元のメディアIDと参照する記事、旧画像のURLを控えます。このページの処理は対応表の作成だけなので、親投稿の付け替えや画像削除は実行しません。まず、画像1件に対して「親投稿」「アイキャッチで使う記事」「本文での利用」を並べ、分かる範囲と未確認の範囲を書き分けてください。

関連する記事

WordPressメディアAPIで画像をアップロードする基本

WordPress REST APIでアイキャッチ画像を設定する方法

公式資料

Media – REST API Handbook | Developer.WordPress.org

Posts – REST API Handbook | Developer.WordPress.org

この記事を書いた人

Watanabeのアバター Watanabe サイト運営者

2020年よりブログ開始。
SEOが思いのほか性にあっていたようで現在に至る。
モットーは「勝率の高い選択をする」
AIは活用するが吉、最後は人間が息を吹き込む。
アートと科学を追求し、日々精進。
―――
収益:6~7桁をウゴウゴ。
サイト:ペラサイト~中規模サイトまで運営中。
案件:1000円以上の案件をメインに取組中。
打ち手:ブラックSEO~ホワイトSEOまで
―――

目次