概要
woocommerce_privacy_before_remove_order_personal_data
は、WooCommerceプラグインにおいて、ユーザーの注文に関連する個人データを削除する前にフックすることができるアクションです。これを使用することで、開発者はユーザーのプライバシーに関わるデータ管理をより柔軟にハンドリングすることができます。このアクションは、以下のような機能を実装する際によく使われます。
- ユーザーの取引履歴のデータ削除前の確認処理
- 追加情報のログを作成するためのカスタム処理
- データ削除前に他の外部システムとの同期を行う
- 削除対象に追加の条件を設定する
- プライバシーポリシーに基づく通知送信
- データ削除プロセスのトレース記録
構文
do_action( 'woocommerce_privacy_before_remove_order_personal_data', $order_id, $request );
パラメータ
$order_id
(int): 削除対象の注文のID。$request
(array): 削除リクエストの詳細情報。
戻り値
このアクションには戻り値はありません。
使用可能なバージョン
- WooCommerce バージョン: 4.9.0 以降
- WordPress バージョン: 5.4 以降
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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( 'woocommerce_privacy_before_remove_order_personal_data', 'log_removal_before_delete', 10, 2 );
function log_removal_before_delete( $order_id, $request ) {
error_log( 'Order ' . $order_id . ' personal data is about to be deleted.' );
}
サンプル2: 外部APIへの通知
このサンプルコードは、削除処理の前に外部APIに通知を送ります。
add_action( 'woocommerce_privacy_before_remove_order_personal_data', 'notify_external_api_before_deletion', 10, 2 );
function notify_external_api_before_deletion( $order_id, $request ) {
$response = wp_remote_post( 'https://api.example.com/notify', array(
'body' => json_encode( array( 'order_id' => $order_id ) ),
'headers' => array( 'Content-Type' => 'application/json' ),
));
}
サンプル3: データ削除の条件チェック
このコードでは、特定の条件を満たす場合のみデータ削除を続行します。
add_action( 'woocommerce_privacy_before_remove_order_personal_data', 'check_conditions_before_removal', 10, 2 );
function check_conditions_before_removal( $order_id, $request ) {
$order = wc_get_order( $order_id );
if ( $order->get_total() > 100 ) { // 100ドル以上の注文のデータは削除しない
return;
}
}
サンプル4: プライバシーポリシーに基づく通知
ユーザーにデータ削除の通知を送信するコードです。
add_action( 'woocommerce_privacy_before_remove_order_personal_data', 'notify_user_before_removal', 10, 2 );
function notify_user_before_removal( $order_id, $request ) {
$user_email = get_userdata( get_current_user_id() )->user_email;
wp_mail( $user_email, 'Your Data is Being Deleted', 'We are about to delete your order data.' );
}
サンプル5: 削除ログ保存
このコードは、削除操作が行われるたびにデータベースに記録します。
add_action( 'woocommerce_privacy_before_remove_order_personal_data', 'save_deletion_log', 10, 2 );
function save_deletion_log( $order_id, $request ) {
global $wpdb;
$wpdb->insert(
'wp_deletion_logs',
array(
'order_id' => $order_id,
'deleted_at' => current_time( 'mysql' ),
)
);
}