WordPressでアイキャッチ画像がない場合、投稿内容の一番最初に見つかった画像をアイキャッチとして設定する実装方法

WordPressで投稿にアイキャッチ画像が設定されていない場合、投稿の内容から一番最初に見つかった画像をアイキャッチ画像として設定したい場合があります。今回は、その実装方法について紹介します。

1. アイキャッチ画像の設定を自動化する理由

アイキャッチ画像が設定されていない場合に、投稿の中から画像を自動的に選んで設定することで、記事に視覚的な魅力を加えることができます。また、手動でアイキャッチ画像を設定し忘れた場合でも、適切な画像を自動的に挿入することで、見栄えが良くなります。

2. 実装方法

以下の手順で、投稿内容の最初の画像をアイキャッチ画像として設定することができます。

2.1. functions.phpにコードを追加する

まずは、テーマのfunctions.phpファイルに以下のコードを追加します。このコードは、投稿の内容に画像が含まれていない場合、最初の画像をアイキャッチ画像として設定します。

function set_featured_image_from_first_image($post_id) {
    // 投稿が保存されたときにのみ実行
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return $post_id;

    // 投稿オブジェクトを取得
    $post = get_post($post_id);

    // 投稿にアイキャッチ画像が設定されているか確認
    if (has_post_thumbnail($post_id)) return $post_id;

    // 投稿の内容から最初の画像を探す
    preg_match_all('/]+src=["\']([^"\']+)["\']/i', $post->post_content, $matches);
    
    if (!empty($matches[1])) {
        // 最初の画像URLを取得
        $first_image_url = $matches[1][0];

        // メディアライブラリに画像が存在する場合、アイキャッチ画像として設定
        $attachment_id = attachment_url_to_postid($first_image_url);
        if ($attachment_id) {
            set_post_thumbnail($post_id, $attachment_id);
        }
    }

    return $post_id;
}

// 投稿保存時に実行
add_action('save_post', 'set_featured_image_from_first_image');

2.2. コードの解説

上記のコードでは、以下のような処理を行っています:

  • 投稿が保存される際に実行:save_postアクションを使用して、投稿が保存されるたびにこの関数が実行されるようにしています。
  • アイキャッチ画像の有無を確認:もしすでにアイキャッチ画像が設定されていれば、処理を終了します。
  • 投稿内容から画像を取得:正規表現を使用して、投稿内容に含まれる最初の画像URLを取得します。
  • アイキャッチ画像を設定:メディアライブラリに画像が存在する場合、その画像をアイキャッチ画像として設定します。

3. 注意点

この方法では、投稿内容の最初に表示される画像がアイキャッチ画像として設定されます。もし投稿に画像が複数含まれている場合や、画像が誤って選ばれてしまう場合もありますので、その点を考慮して使用することが重要です。

4. まとめ

この実装を行うことで、投稿内容にアイキャッチ画像が設定されていない場合でも、最初に見つかった画像をアイキャッチとして自動的に設定することができます。これにより、手間を省くことができ、視覚的に魅力的な投稿が作成できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA