概要
tec_events_custom_tables_v1_delete_postは、The Events Calendarプラグインにおいて、イベントが削除された際にフックされるアクションです。このアクションは、特にカスタムテーブルや関連データのクリーンアップに利用されます。主に、以下のような機能を実装する際に使用されます:
- イベント削除時のログ記録
- 関連するメタデータの削除
- イベントカスタムフィールドのクリーニング
- 外部APIへの更新通知
- 他のテーブルとの依存関係の解除
- 通知メールやサンクスメールの送信
構文
do_action( 'tec_events_custom_tables_v1_delete_post', $post_id );
パラメータ
$post_id(int): 削除された投稿のID。
戻り値
このアクションには戻り値はありません。
使用可能なバージョン
- The Events Calendarのバージョン: 5.0以降
- WordPressのバージョン: 5.0以降
この関数のアクションでの使用可能性
| アクション名 | 使用例 |
|---|---|
| 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( 'tec_events_custom_tables_v1_delete_post', 'log_event_deletion' );
function log_event_deletion( $post_id ) {
$event_title = get_the_title( $post_id );
error_log( "Event deleted: " . $event_title );
}
引用元: https://developer.wordpress.org/reference/functions/error_log/
サンプルコード2: 関連メタデータの削除
このコードは、削除されたイベントに関連するメタデータを一緒に削除します。
add_action( 'tec_events_custom_tables_v1_delete_post', 'delete_event_meta_data' );
function delete_event_meta_data( $post_id ) {
delete_post_meta( $post_id, 'event_location' );
delete_post_meta( $post_id, 'event_date' );
}
引用元: https://developer.wordpress.org/reference/functions/delete_post_meta/
サンプルコード3: 外部APIへの更新通知
イベントが削除されたことを外部APIに通知するためのコードです。
add_action( 'tec_events_custom_tables_v1_delete_post', 'notify_external_api' );
function notify_external_api( $post_id ) {
$response = wp_remote_post( 'https://example.com/api/event-deleted', [
'body' => json_encode( [ 'post_id' => $post_id ] ),
'headers' => [ 'Content-Type' => 'application/json' ],
]);
}
引用元: https://developer.wordpress.org/reference/functions/wp_remote_post/
サンプルコード4: 他のテーブルとの依存関係の解除
このコードは、他のカスタムテーブルに関連するデータを削除します。
add_action( 'tec_events_custom_tables_v1_delete_post', 'remove_related_data' );
function remove_related_data( $post_id ) {
global $wpdb;
$wpdb->delete( 'wp_related_events', [ 'event_id' => $post_id ] );
}
引用元: https://developer.wordpress.org/reference/classes/wpdb/delete/
サンプルコード5: 通知メールの送信
イベントが削除されたことを管理者に通知するメールを送信します。
add_action( 'tec_events_custom_tables_v1_delete_post', 'send_notification_email' );
function send_notification_email( $post_id ) {
$admin_email = get_option( 'admin_email' );
$event_title = get_the_title( $post_id );
wp_mail( $admin_email, 'Event Deleted', "The event '{$event_title}' has been deleted." );
}
引用元: https://developer.wordpress.org/reference/functions/wp_mail/