MENU

attachment_submit_meta_box()

attachment_submit_meta_box() は、WordPress の管理画面でメディアファイル(添付ファイル)を編集する際に表示される「公開」メタボックスを出力するための関数です。

この関数は通常、添付ファイルの編集画面において、保存・更新ボタンや日付情報などを表示するパネルの出力に使われます。カスタムメディア編集画面やプラグイン開発時に活用できます。

目次

機能の説明

  • attachment_submit_meta_box() は、メディアライブラリで画像などを編集する際に表示される**「公開」「保存」などのエリア(submitdiv)**を出力するための関数です。
  • 投稿タイプが attachment のとき、通常の post_submit_meta_box() の代わりにこの関数が呼び出されます。

どういう時に使うか?

  • メディア編集画面のメタボックスをカスタマイズしたいとき
  • 添付ファイルの更新日時や公開状態などを操作するUIを追加・上書きしたいとき

基本構文

attachment_submit_meta_box( WP_Post $post );

この関数は WP_Post オブジェクト(メディアファイル)を受け取り、そのメディアの「公開」ボックスを HTML として出力します。

引き数と戻り値

引き数必須説明
$postWP_Post必須対象となる添付ファイルの投稿オブジェクト
戻り値説明
なし(voidnullHTML を直接出力するため戻り値はありません

使用例

attachment(メディア投稿タイプ)のサイドに「保存」メタボックスを表示

add_meta_box(
  'submitdiv',
  __( '保存', 'textdomain' ),
  'attachment_submit_meta_box',
  'attachment',
  'side',
  'core'
);

このコードは、attachment(メディア投稿タイプ)のサイドに「保存」メタボックスを表示します。

管理画面のカスタム添付ファイル編集ページで attachment_submit_meta_box() を出力する例

add_action( 'add_meta_boxes_attachment', function() {
    add_meta_box(
        'submitdiv',
        __( '公開' ),
        'attachment_submit_meta_box',
        'attachment',
        'side',
        'core'
    );
} );
  • add_meta_box() により、attachment_submit_meta_box() を呼び出すメタボックスを添付ファイルの編集画面に追加しています。
  • このボックスには公開状態や日時などの情報が表示されます。

注意点

  • この関数は 直接出力を行うため、バッファリングや戻り値の取得はできません。
  • 基本的に WordPress 管理画面内でのみ使用すべき関数です。
  • $post は必ず 添付ファイルの WP_Post オブジェクトである必要があります。他の投稿タイプでは正しく動作しません。

良く一緒に使われる関数

add_meta_box()

add_meta_box(
  'submitdiv',
  '保存',
  'attachment_submit_meta_box',
  'attachment',
  'side'
);

attachment_submit_meta_box() を管理画面に追加する際に使用。

add_meta_box(
    'submitdiv',
    '公開',
    'attachment_submit_meta_box',
    'attachment',
    'side',
    'core'
);

メタボックスの追加に使われる関数。attachment_submit_meta_box() をコールバックに指定。

get_post()

$post = get_post( $attachment_id );
attachment_submit_meta_box( $post );

指定した ID の投稿情報を取得する際に使います。添付ファイルの WP_Post オブジェクトを得るために使います。

add_action()

add_action( 'add_meta_boxes_attachment', 'my_add_meta_boxes_for_attachments' );

メタボックス追加タイミングにフックする際に使います。

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

添付ファイルのメタ情報を取得したい場合

$mime = get_post_mime_type( $post->ID );
$uploaded_date = get_the_date( '', $post );

一般の投稿用メタボックスを使いたい場合

post_submit_meta_box():投稿やカスタム投稿タイプでの「公開情報」メタボックス。このテンプレートタグを利用してのカスタマイズ

メディア編集画面でカスタムUIを追加

function my_custom_attachment_meta_box() {
  add_meta_box(
    'submitdiv',
    '保存+拡張',
    function( $post ) {
      attachment_submit_meta_box( $post );
      echo '<p>ここにカスタム設定追加</p>';
    },
    'attachment',
    'side'
  );
}
add_action( 'add_meta_boxes_attachment', 'my_custom_attachment_meta_box' );

想定されるトラブル

投稿タイプが attachment でないと使えない

解決方法

  • attachment_submit_meta_box() は添付ファイル専用なので、投稿やページでは post_submit_meta_box() を使う。

投稿タイプがattachment以外で使用

attachment_submit_meta_box() は添付ファイル専用の構造を持つため、通常の投稿やページで使用すると不具合が起きる。

解決方法

$post->post_type をチェックして 'attachment' の時だけ使用するようにしましょう。

戻り値が得られない

関数が HTML を直接出力するため、関数の戻り値を受け取ろうとしても null になります。

解決方法

出力を制御したい場合は ob_start()ob_get_clean() を使ってキャプチャする方法を検討してください。

ob_start();
attachment_submit_meta_box( $post );
$html = ob_get_clean();

Q&A(よくある質問)

テーマ内でこの関数を使うべき?

通常のテーマでは使用しません。管理画面用です。

投稿や固定ページで使える?

いいえ、attachment 投稿タイプ専用です。

これを上書きして拡張するには?

add_meta_box() でフックし、自作関数で中身を拡張できます。

この関数をフロントエンドで使えますか?

いいえ、管理画面専用で設計されています。フロントでの使用は避けましょう。

「公開」メタボックスをカスタマイズできますか?

attachment_submit_meta_box() を独自に上書きした関数に差し替えれば可能です。

添付ファイル以外の投稿タイプでは使えますか?

基本的には使えません。内部構造が異なるため、出力エラーの可能性があります。

まとめ

attachment_submit_meta_box() は、WordPress のメディア編集画面における「保存・状態変更」エリアを出力するための内部関数です。

通常はコアによって自動的に呼び出されますが、管理画面をカスタマイズしたいプラグイン開発者や上級テーマ制作者には重要な関数となります。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

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

目次