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 として出力します。
引き数と戻り値
引き数 | 型 | 必須 | 説明 |
---|---|---|---|
$post | WP_Post | 必須 | 対象となる添付ファイルの投稿オブジェクト |
戻り値 | 型 | 説明 |
---|---|---|
なし(void ) | null | HTML を直接出力するため戻り値はありません |
使用例
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_submit_meta_box()
は、WordPress のメディア編集画面における「保存・状態変更」エリアを出力するための内部関数です。
通常はコアによって自動的に呼び出されますが、管理画面をカスタマイズしたいプラグイン開発者や上級テーマ制作者には重要な関数となります。
コメント