wp_generate_attachment_metadata()


WordPressのwp_generate_attachment_metadata()関数は、添付ファイル(画像など)のメタデータを生成するために使用されます。この関数は、アップロードしたメディアの詳細情報を生成し、データベースに保存します。

構文

wp_generate_attachment_metadata( int $attachment_id, string $file );

引数の説明:

  • $attachment_id (int) — 添付ファイルの投稿ID。
  • $file (string) — 添付ファイルのフルパス。

例 1. 添付ファイルのメタデータを生成

以下のコードは、投稿IDを使用してメタデータを生成します。

<?php
$attachment_id = get_post_thumbnail_id();
$file = get_attached_file( $attachment_id );
$metadata = wp_generate_attachment_metadata( $attachment_id, $file );
wp_update_attachment_metadata( $attachment_id, $metadata );
?>

例 2. 特定の添付ファイルのメタデータを生成

特定の画像IDでメタデータを生成します。

<?php
$file_path = get_attached_file( get_post_thumbnail_id( get_the_ID() ) );
wp_generate_attachment_metadata( get_post_thumbnail_id(), $file_path );
?>

例 3. 新しい画像をアップロードした後にメタデータを生成

画像をアップロードした直後に使用する例です。

<?php
$attachment_id = media_handle_upload( 'file', 0 );
$file = get_attached_file( $attachment_id );
wp_generate_attachment_metadata( $attachment_id, $file );
?>

例 4. 添付ファイルのメタデータを再生成

既存の添付ファイルのメタデータを更新します。

<?php
$attachment_id = 123; // 投稿IDを取得する関数で置き換える
$file = get_attached_file( $attachment_id );
$new_metadata = wp_generate_attachment_metadata( $attachment_id, $file );
wp_update_attachment_metadata( $attachment_id, $new_metadata );
?>

例 5. カスタムフックで自動生成

メディアアップロード時に自動的にメタデータを生成します。

<?php
add_action( 'add_attachment', function( $attachment_id ) {
    $file = get_attached_file( $attachment_id );
    $metadata = wp_generate_attachment_metadata( $attachment_id, $file );
    wp_update_attachment_metadata( $attachment_id, $metadata );
} );
?>

備考:

この関数を使用する場合、ファイルのパスが正確であることを確認してください。メタデータ生成プロセスが成功しない場合、画像のリサイズやサムネイルが正しく生成されない可能性があります。


関連機能: