Help us understand the problem. What is going on with this article?

WordPressでアイキャッチ画像の登録をphpから行う

More than 3 years have passed since last update.

いつも忘れてしまうので備忘録。
WordPressのアイキャッチ画像をプログラムで登録したい場合のコード。
サーバ上のどこかにアイキャッチにしたい画像がすでにある前提です。

<手順>
1. 画像のメタ情報を取得
2. アタッチメント登録
3. 該当のポストにアイキャッチとして登録

サンプルコード

functions.php
$upload_path = "upload_dir/path/filename.png"; // アイキャッチ画像のサーバ上のファイルパスを指定(※URLではない)

// ファイルメタ情報登録
$meta = getimagesize($upload_path);
$attachment = array(
  'post_mime_type' => image_type_to_mime_type($meta[2]),
  'post_title' => preg_replace('/\.[^.]+$/', '', $upload_path),
  'post_content' => '',
  'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $upload_path, $post_id );

if($attach_id) {
  require_once(ABSPATH . "wp-admin" . '/includes/image.php'); // これが必要
  $attach_data = wp_generate_attachment_metadata( $attach_id, $upload_path );
  wp_update_attachment_metadata( $attach_id,  $attach_data );

  // ファイル添付が完了したらアイキャッチとしてpost_metaを更新
  update_post_meta($post_id, '_thumbnail_id', $attach_id);
}
bump_of_kiharu
Web app developer. 最近JSにハマってます。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away