プラグインWooCommerceのwoocommerce_bulk_edit_save_price_product_typesフィルタの使用方法・解説

概要

woocommerce_bulk_edit_save_price_product_types フィルタは、WooCommerceにおいて商品タイプごとに一括編集された価格を保存する際に使われます。このフックを用いることで、価格が保存される前に値を変更したり、追加の処理を行ったりすることが可能です。特に、以下のような機能を実装する際によく使われます:

  1. 価格のカスタマイズ
  2. 割引やプロモーションの適用
  3. タグやメタデータの自動設定
  4. 品目の価格のための独自のバリデーション
  5. 特定の条件に基づく価格の調整
  6. 商品の履歴管理やログ記録

構文

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に制限します。

この関数について質問する


上の計算式の答えを入力してください