概要
woocommerce_bulk_edit_save_price_product_types
フィルタは、WooCommerceにおいて商品タイプごとに一括編集された価格を保存する際に使われます。このフックを用いることで、価格が保存される前に値を変更したり、追加の処理を行ったりすることが可能です。特に、以下のような機能を実装する際によく使われます:
- 価格のカスタマイズ
- 割引やプロモーションの適用
- タグやメタデータの自動設定
- 品目の価格のための独自のバリデーション
- 特定の条件に基づく価格の調整
- 商品の履歴管理やログ記録
構文
add_filter('woocommerce_bulk_edit_save_price_product_types', 'your_function_name', 10, 3);
パラメータ
$types
(array): 一括編集された製品のタイプの配列。$prices
(array): 編集された価格の配列。$data
(array): 編集で使用されるその他のデータ。
戻り値
- フィルタリングされた
$types
配列が戻されます。
使用可能なプラグインのバージョン
- 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. 価格を10%引きにする
add_filter('woocommerce_bulk_edit_save_price_product_types', 'discount_price_on_bulk_edit', 10, 2);
function discount_price_on_bulk_edit($types, $prices) {
foreach ($prices as $key => $price) {
$prices[$key] = $price * 0.9; // 価格を10%引きにする
}
return $prices;
}
このコードは、一括編集で設定された価格を10%引きにして保存します。
2. 特定の製品タイプにのみ適用
add_filter('woocommerce_bulk_edit_save_price_product_types', 'apply_discount_for_specific_type', 10, 2);
function apply_discount_for_specific_type($types, $prices) {
foreach ($types as $key => $type) {
if ($type === 'simple') {
$prices[$key] = $prices[$key] * 0.85; // 単純商品の場合、価格を15%引きにする
}
}
return $prices;
}
このコードは、単純商品に対してのみ、価格を15%引きにします。
3. 価格を負の値にしない
add_filter('woocommerce_bulk_edit_save_price_product_types', 'prevent_negative_price', 10, 2);
function prevent_negative_price($types, $prices) {
foreach ($prices as $key => $price) {
if ($price < 0) {
$prices[$key] = 0; // 負の価格が設定された場合は0にする
}
}
return $prices;
}
このコードは、負の価格が設定された場合にその価格を0に変えます。
4. 特定のユーザーに価格設定を制限
add_filter('woocommerce_bulk_edit_save_price_product_types', 'restrict_price_edit_for_user', 10, 2);
function restrict_price_edit_for_user($types, $prices) {
if (current_user_can('specific_user_role')) {
// 特定のユーザー役割の場合はそのままの価格を適用
return $prices;
}
// それ以外のユーザーはデフォルトの値
return array_fill(0, count($prices), 10); // 全ての価格を10に設定
}
このコードは、特定のユーザーには自由に価格が設定できるようにし、他のユーザーには価格を10に固定します。
5. 価格が特定の条件に一致する場合のみ保存
add_filter('woocommerce_bulk_edit_save_price_product_types', 'conditional_price_save', 10, 2);
function conditional_price_save($types, $prices) {
foreach ($prices as $key => $price) {
if ($price > 100) {
$prices[$key] = 100; // 価格が100を超える場合は100に制限
}
}
return $prices;
}
このコードは、価格が100を超える場合にその価格を100に制限します。