概要
woocommerce_updated_product_price
は、WooCommerceの特定の製品の価格が更新されたときに実行されるフックです。このアクションは、商品価格の変更に対して反応し、必要に応じて追加の処理を行うために使用されることがよくあります。以下は、一般的な使用例です。
- 価格変更をトラッキングする。
- 外部のAPIに価格変更を通知する。
- ログに価格変更の履歴を記録する。
- 顧客に価格変更を知らせるための通知を送信する。
- 特別割引やプロモーションを適用する。
- 在庫管理システムとの同期を行う。
構文
add_action('woocommerce_updated_product_price', 'your_function_name', 10, 2);
パラメータ
- $product_id (int): 更新された商品のID。
- $new_price (float): 新しい価格。
戻り値
このアクションは戻り値を持ちません。
対応バージョン
- WooCommerceバージョン: 3.0以降
- WordPressバージョン: 4.0以降
サンプルコード
サンプル1: 価格変更をログに記録する
このサンプルコードは、商品価格が更新されたときにその情報をログに記録します。
add_action('woocommerce_updated_product_price', 'log_price_change', 10, 2);
function log_price_change($product_id, $new_price) {
error_log("Product ID: {$product_id} has a new price: {$new_price}");
}
サンプル2: 外部APIに価格変更を通知
このサンプルは、価格が変更された際に外部APIに価格変更を通知します。
add_action('woocommerce_updated_product_price', 'notify_external_api', 10, 2);
function notify_external_api($product_id, $new_price) {
$url = 'https://example.com/api/notify';
$data = array('product_id' => $product_id, 'new_price' => $new_price);
wp_remote_post($url, array('body' => json_encode($data)));
}
サンプル3: 顧客にメール通知を送信
このサンプルは、価格が変更された顧客にメール通知を送信します。
add_action('woocommerce_updated_product_price', 'send_price_change_notification', 10, 2);
function send_price_change_notification($product_id, $new_price) {
$product = wc_get_product($product_id);
$customers_emails = get_customers_emails_for_product($product_id); // この関数は必要に応じて定義
$subject = '価格が変更されました';
$message = sprintf('商品の新しい価格: %s', $new_price);
foreach ($customers_emails as $email) {
wp_mail($email, $subject, $message);
}
}
サンプル4: 特別割引を適用する
このサンプルは、価格が更新された際に特定の条件に基づいて特別割引を適用します。
add_action('woocommerce_updated_product_price', 'apply_special_discount', 10, 2);
function apply_special_discount($product_id, $new_price) {
if ($new_price > 100) {
$discounted_price = $new_price * 0.9; // 10%割引
update_post_meta($product_id, '_price', $discounted_price);
}
}
サンプル5: 価格変更の履歴をデータベースに保存
このサンプルは、価格変更の履歴をデータベースに記録します。
add_action('woocommerce_updated_product_price', 'save_price_change_history', 10, 2);
function save_price_change_history($product_id, $new_price) {
global $wpdb;
$table_name = $wpdb->prefix . 'price_change_history';
$wpdb->insert(
$table_name,
array(
'product_id' => $product_id,
'new_price' => $new_price,
'date' => current_time('mysql')
)
);
}
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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 |