MENU

attachment_submitbox_metadata()

attachment_submitbox_metadata() は、WordPress 管理画面のメディア編集ページ(添付ファイル編集画面)で、添付ファイルのメタデータ(ファイル情報、サイズ、アップロード日時など)を「公開」メタボックス内に表示する内部関数です。

投稿タイプ attachment の管理画面に表示される情報のうち、ファイルの詳細に関する部分を担っており、カスタムメタ情報の追加や UI 拡張にも活用できます。

目次

機能の説明

どんなテンプレートタグ?

  • 添付ファイルのメタデータ(ファイル名、タイプ、サイズ、アップロード日など)を表示。
  • 管理画面で attachment 投稿タイプを開いた際、「公開」メタボックス内に情報を出力。
  • WordPress コア内部で使用される関数で、通常は wp-admin/includes/meta-boxes.php に定義。

どんな時に使う?

  • 添付ファイルのメタ情報を表示したい場合。
  • メディアファイルの管理画面をカスタマイズしたい時(情報の追加や表示の制御)。

シンプルなコード例

以下のように、WordPress コア内部で利用されています:

add_meta_box(
  'submitdiv',
  __( 'Save' ),
  'post_submit_meta_box',
  'attachment',
  'side',
  'core'
);

そして post_submit_meta_box() 内で attachment_submitbox_metadata() が呼ばれます:

if ( 'attachment' === $post->post_type ) {
  attachment_submitbox_metadata();
}

使い方の説明

この関数は引数を取らず、グローバル変数 $post に依存して添付ファイルの情報を取得します。

function attachment_submitbox_metadata() {
  // echo HTML を直接出力(ファイルの詳細、サイズ、アップロード日時など)
}

定義(内部)

function attachment_submitbox_metadata() {
  global $post;
  $file     = get_attached_file( $post->ID );
  $filename = esc_html( wp_basename( $file ) );
  // 以下、HTML でファイル名・アップロード日などを表示するコードが続く
}

主に表示される情報

  • ファイル名
  • ファイルタイプ(MIME)
  • アップロード日時
  • ファイルサイズ(size_format() による整形)
  • 画像サイズ(画像の場合)

一緒に使うことが多い関連タグ

get_attached_file()

$file_path = get_attached_file( $post->ID );

添付ファイルのファイル情報を取得。

wp_get_attachment_metadata()

$meta = wp_get_attachment_metadata( $attachment_id );

添付ファイルのメタ情報(画像サイズ・オーディオ情報など)を取得。

wp_get_attachment_url()

$url = wp_get_attachment_url( $attachment_id );

添付ファイルの URL を取得。

size_format()

$size = size_format( filesize( $file_path ) );

バイト数を KB/MB に変換して表示。

wp_basename()

$filename = wp_basename( $file_path );

ファイル名部分だけを取り出す。

get_post_mime_type()

$type = get_post_mime_type( $attachment_id );

添付ファイルの MIME タイプを取得(例:image/jpeg、audio/mpegなど)。

human_readable_duration()size_format()

$size = size_format( filesize( get_attached_file( $attachment_id ) ) );

ファイルサイズを人間に読みやすい形式(KB、MB)に変換。

追加情報で取得したい場合

メディアファイルの詳細を独自に取得してカスタマイズ表示したい場合:

$post_id = get_the_ID();
$file_path = get_attached_file( $post_id );
$file_size = size_format( filesize( $file_path ) );

echo '<p>ファイルサイズ:' . esc_html( $file_size ) . '</p>';

追加情報例:

  • 画像の寸法($meta['width'], $meta['height']
  • オーディオの長さ($meta['length_formatted']
  • 動画の解像度や長さ

このテンプレートタグを利用してのカスタマイズ

公開メタボックスにカスタム情報を追加

function custom_attachment_metadata_info() {
  global $post;
  if ( $post->post_type === 'attachment' ) {
    $meta = wp_get_attachment_metadata( $post->ID );
    if ( isset( $meta['width'], $meta['height'] ) ) {
      echo '<div><strong>解像度:</strong> ' . esc_html( $meta['width'] . 'x' . $meta['height'] ) . '</div>';
    }
  }
}
add_action( 'post_submitbox_misc_actions', 'custom_attachment_metadata_info' );

想定されるトラブル

メディア詳細に情報が表示されない

管理画面の「公開」メタボックスにメタ情報が表示されないことがある。

解決方法

  • 画像や音声ファイルに対し wp_generate_attachment_metadata() が実行されていない可能性。
  • メタ情報を手動で更新・再生成する処理を追加する(Regenerate Thumbnails プラグインなどを使用)。

Q&A

この関数はどこで呼び出されていますか?

post_submit_meta_box() の中で、添付ファイル編集画面(attachment post type)のみ表示。

添付ファイルの拡張情報を追加できますか?

はい。post_submitbox_misc_actions フックで追加可能です。

出力は自動で HTML に含まれますか?

はい。attachment_submitbox_metadata() 内で直接 echo による HTML 出力が行われます。

この関数を自作の管理画面で使えますか?

可能ですが、 $post の内容と環境を正しくセットする必要があります。

HTML 出力を変更できますか?

関数内で直接 echo 出力されるため、上書きするには post_submitbox_misc_actions フックなどを使って追加・置換します。

フックで処理を追加できますか?

はい。post_submitbox_misc_actions が便利です。

まとめ

  • attachment_submitbox_metadata() は、添付ファイル編集画面にメタ情報を表示する内部関数。
  • 通常は post_submit_meta_box() 内で使用され、ファイル名、サイズ、タイプ、アップロード日時などを表示。
  • wp_get_attachment_metadata() などと連携して、カスタマイズも可能。
  • post_submitbox_misc_actions フックを使えば、メタ情報を拡張した表示にも対応。
よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次