概要
woocommerce_delete_$POST_TYPE
アクションは、WooCommerce内でカスタム投稿タイプが削除された際に呼び出されます。このフックを利用することで、特定の投稿タイプの削除時に独自の処理を実行することができます。例えば、削除時に関連するデータをクリーンアップする、外部サービスに通知する、またはロギングを行うといった用途に利用されます。
よく使われる機能は以下の通りです:
- カスタムデータの削除
- 外部APIへの通知
- データベースの整合性チェック
- ロギング機能の実装
- イベントトラッキングの実施
- 通知メールの送信
構文
add_action( 'woocommerce_delete_$POST_TYPE', 'your_callback_function', 10, 1 );
パラメータ
$POST_TYPE
: 削除されたカスタム投稿タイプのスラッグ。$post_id
: 削除された投稿のID。
戻り値
このアクションは値を戻しません。
対応バージョン
- WooCommerce: 3.0以降
- WordPress: 4.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( 'woocommerce_delete_product', 'remove_related_data_on_product_delete', 10, 1 );
function remove_related_data_on_product_delete( $post_id ) {
// 削除された商品に関連するカスタムメタデータを削除します。
delete_post_meta( $post_id, 'related_meta_key' );
}
引用元: なし
サンプル 2: 外部APIへの通知
add_action( 'woocommerce_delete_order', 'notify_external_service_on_order_delete', 10, 1 );
function notify_external_service_on_order_delete( $post_id ) {
// 外部APIへの通知を実行します。
wp_remote_post( 'https://example.com/api/notify', array(
'body' => json_encode( array( 'deleted_order_id' => $post_id ) ),
'headers' => array( 'Content-Type' => 'application/json' )
) );
}
引用元: なし
サンプル 3: 削除ログの記録
add_action( 'woocommerce_delete_product', 'log_product_deletion', 10, 1 );
function log_product_deletion( $post_id ) {
// 削除された商品のIDをログに記録します。
error_log( 'Product deleted: ' . $post_id );
}
引用元: なし
サンプル 4: データベースの整合性チェック
add_action( 'woocommerce_delete_coupon', 'check_data_integrity_after_coupon_delete', 10, 1 );
function check_data_integrity_after_coupon_delete( $post_id ) {
// クーポン削除後にデータベースの整合性をチェックします。
// 整合性チェックの処理を書く
}
引用元: なし
サンプル 5: メールの送信
add_action( 'woocommerce_delete_product', 'send_admin_notification_on_product_delete', 10, 1 );
function send_admin_notification_on_product_delete( $post_id ) {
// 削除された商品の詳細を管理者にメールで通知します。
wp_mail( 'admin@example.com', '商品が削除されました', '削除された商品ID: ' . $post_id );
}
引用元: なし