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

概要

woocommerce_variable_product_sync_data フィルタは、WooCommerce プラグインにおいて可変商品(バリエーション商品)のデータを同期する際に用いられるフックです。主に以下のような機能を実装する際によく使用されます。

  1. 商品バリエーションの価格を一括で変更する。
  2. 各バリエーションの在庫状況を同期して管理する。
  3. 商品のSKU(在庫管理単位)を動的に変更する。
  4. 特定の条件に基づいてバリエーションの属性を変更する。
  5. 在庫切れバリエーションを自動で非表示にする。
  6. ユーザーの選択に応じてバリエーションの情報をカスタマイズする。

構文

add_filter( 'woocommerce_variable_product_sync_data', 'your_function_name', 10, 2 );

パラメータ

  • $data – 可変商品の同期データを格納した配列。
  • $product – WooCommerce 商品オブジェクト。

戻り値

  • フィルタを適用した後の、更新された可変商品の同期データ配列。

使用可能なプラグインWooCommerceのバージョン

  • 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_filter('woocommerce_variable_product_sync_data', 'custom_sync_variable_product_data', 10, 2);
function custom_sync_variable_product_data($data, $product) {
    $price_increase_percentage = 10; // 10%の値上げ
    foreach ($data['variations'] as $key => $variation) {
        $data['variations'][$key]['display_price'] *= (1 + $price_increase_percentage / 100);
        $data['variations'][$key]['price'] *= (1 + $price_increase_percentage / 100);
    }
    return $data;
}

引用元: https://www.example.com/sample1

サンプルコード 2: 在庫状況を同期する

このコードは、親商品の在庫状況に基づいて各バリエーションの在庫状況を設定します。

add_filter('woocommerce_variable_product_sync_data', 'sync_variation_stock_status', 10, 2);
function sync_variation_stock_status($data, $product) {
    $in_stock = $product->is_in_stock() ? 'instock' : 'outofstock';
    foreach ($data['variations'] as &$variation) {
        $variation['stock_status'] = $in_stock;
    }
    return $data;
}

引用元: https://www.example.com/sample2

サンプルコード 3: 特定条件に基づく属性の変更

このコードでは、特定の商品属性に応じて各バリエーションの情報をカスタマイズしています。

add_filter('woocommerce_variable_product_sync_data', 'modify_variation_attributes', 10, 2);
function modify_variation_attributes($data, $product) {
    foreach ($data['variations'] as &$variation) {
        if ($variation['attributes']['size'] === 'large') {
            $variation['attributes']['custom_field'] = 'Large Size Selected';
        }
    }
    return $data;
}

引用元: https://www.example.com/sample3

サンプルコード 4: 在庫切れバリエーションの非表示

このコードは、在庫切れのバリエーションを自動で非表示にします。

add_filter('woocommerce_variable_product_sync_data', 'hide_out_of_stock_variations', 10, 2);
function hide_out_of_stock_variations($data, $product) {
    foreach ($data['variations'] as $key => $variation) {
        if ($variation['stock_quantity'] <= 0) {
            unset($data['variations'][$key]);
        }
    }
    return $data;
}

引用元: https://www.example.com/sample4

サンプルコード 5: SKUの動的変更

このコードは、在庫管理用SKUを動的に変更します。

add_filter('woocommerce_variable_product_sync_data', 'dynamic_sku_change', 10, 2);
function dynamic_sku_change($data, $product) {
    foreach ($data['variations'] as &$variation) {
        $variation['sku'] .= '-custom'; // SKUに '-custom' を追加
    }
    return $data;
}

引用元: https://www.example.com/sample5

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


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