概要
wp_delete_attachment
アクションは、WordPress においてメディア情報を削除する際に使用されます。このアクションは、特定のアタッチメント(例えば画像やPDFなど)を削除した後に呼び出されます。このアクションは、アタッチメントが削除された後にカスタム処理を行いたい場合や、他のエレメンタルを更新するためのフックとしてよく利用されます。
wp_delete_attachment
アクションがよく使用される機能実装例:
1. アタッチメント削除時にカスタムメタデータも削除する処理
2. お知らせメールなどの通知を送信する処理
3. アタッチメントに関連するカスタムデータをデータベースから削除する処理
4. メディアライブラリの一覧を更新する処理
5. サードパーティサービスとの同期を行う処理
6. キャッシュ管理の更新処理
7. アタッチメント削除のログを記録する処理
8. 削除前の確認を行うモーダル表示などの UI 処理
構文
do_action('wp_delete_attachment', $attachment_id);
パラメータ
$attachment_id
: 削除されたアタッチメントの ID(整数)
戻り値
このアクション自体には戻り値はありませんが、フックを使用して新しい機能や動作を追加するために使用されます。
関連する関数
使用可能なバージョン
wp_delete_attachment
アクションは、WordPress 2.0.0 以降で利用可能です。
コアファイルのパス
wp-includes/post.php
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
mu_plugin_loaded | |
registered_post_type | |
plugins_loaded | |
wp_roles_init | |
setup_theme | |
after_setup_theme | |
set_current_user | |
init | |
register_sidebar | |
wp_loaded | |
send_headers | |
parse_query | |
pre_get_posts | |
wp | |
template_redirect | |
get_header | |
wp_head |
サンプルコード
サンプル 1: アタッチメント削除時にメタデータを削除する
add_action('wp_delete_attachment', 'remove_custom_attachment_meta', 10, 1);
function remove_custom_attachment_meta($attachment_id) {
delete_post_meta($attachment_id, 'custom_meta_key');
}
説明: アタッチメントが削除される際に、そのアタッチメントに紐づいたカスタムメタデータを削除します。この処理により、データベース内の不必要なデータを整理することができます。
サンプル 2: アタッチメント削除の通知をメールで送信
add_action('wp_delete_attachment', 'send_attachment_delete_notification', 10, 1);
function send_attachment_delete_notification($attachment_id) {
$attachment = get_post($attachment_id);
$to = 'admin@example.com';
$subject = 'アタッチメントが削除されました';
$message = 'アタッチメント "' . $attachment->post_title . '" が削除されました。';
wp_mail($to, $subject, $message);
}
説明: アタッチメントが削除されると、管理者にメール通知を送信します。このことで、アタッチメントの管理状況が把握しやすくなります。
サンプル 3: アタッチメント削除のログを記録する
add_action('wp_delete_attachment', 'log_attachment_deletion', 10, 1);
function log_attachment_deletion($attachment_id) {
$log_message = 'Attachment with ID ' . $attachment_id . ' was deleted.';
error_log($log_message);
}
説明: アタッチメントが削除されたときに、サーバーのエラーログにログメッセージを記録します。このログにより、アタッチメントの削除のトレースが可能になります。
サンプル 4: 依存するデータを削除
add_action('wp_delete_attachment', 'delete_related_data_on_attachment_delete', 10, 1);
function delete_related_data_on_attachment_delete($attachment_id) {
global $wpdb;
$wpdb->delete('related_table', array('attachment_id' => $attachment_id));
}
説明: アタッチメントが削除されると、特定のテーブルからそのアタッチメントに関連するデータも削除します。これにより、データベースを清潔に保つことができます。
サンプル 5: アタッチメント削除前に確認処理
add_action('wp_delete_attachment', 'check_attachment_before_delete', 5, 1);
function check_attachment_before_delete($attachment_id) {
// 特定の条件が満たされない場合は削除を停止する処理をここに追加
}
説明: アタッチメントが削除される前に特定の条件を確認します。この条件が満たされなければ、削除プロセスを停止することができるようにするための雛形です。