概要
woocommerce_available_variation
フィルタは、WooCommerceの変数商品に関連する特定のバリエーション情報をカスタマイズするために使用されます。このフィルタは、カスタムフィールドのデータを追加したり、変数商品の価格や在庫状況を変更したりする場合に便利です。
通常、このフィルタは以下のような機能を実装する際に使われます。
- 価格のカスタマイズ: 各バリエーションの価格を変更する。
- 在庫情報の追加: 在庫状況をカスタマイズし、特定の条件に基づいて在庫あり/なしを設定。
- カスタムフィールドの追加: バリエーションに対してカスタムフィールドを追加し、表示を変更する。
- 製品の可用性の変更: 特定のバリエーションの可用性を変更する。
- バリエーション情報の拡張: バリエーションに関連する追加情報を表示する。
- 条件付きロジック: 特定の条件に基づいてバリエーションの情報を変更する。
構文
add_filter('woocommerce_available_variation', 'custom_variation_function', 10, 3);
パラメータ
$available_variation
: 現在のバリエーションの情報が格納された配列。$product
: 商品オブジェクト。$variation
: バリエーションオブジェクト。
戻り値
フィルタによって変更されたバリエーションの情報を含む配列。
バージョン
- 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_available_variation', 'customize_variation_price', 10, 3);
function customize_variation_price($available_variation, $product, $variation) {
if ($variation->get_attribute('color') === 'red') {
$available_variation['display_price'] = $variation->get_price() + 10; // 赤色バリエーションに追加料金
}
return $available_variation;
}
出典: https://www.wpbeginner.com/
サンプルコード2: 在庫情報を変更する
このコードは、特定のバリエーションの在庫状況を変更するサンプルです。
add_filter('woocommerce_available_variation', 'change_variation_stock_status', 10, 3);
function change_variation_stock_status($available_variation, $product, $variation) {
if ($variation->get_attribute('size') === 'small') {
$available_variation['is_in_stock'] = false; // 小サイズの在庫を無効化
$available_variation['stock_quantity'] = 0; // 在庫数をゼロに設定
}
return $available_variation;
}
出典: https://woocommerce.com/
サンプルコード3: カスタムフィールドの追加
このコードは、各バリエーションにカスタムフィールドを追加するサンプルです。
add_filter('woocommerce_available_variation', 'add_custom_field_to_variation', 10, 3);
function add_custom_field_to_variation($available_variation, $product, $variation) {
$available_variation['custom_field'] = get_post_meta($variation->get_id(), 'custom_field_key', true);
return $available_variation;
}
出典: https://developer.woocommerce.com/
サンプルコード4: バリエーション情報の拡張
このコードは、バリエーションに対して追加の情報を表示するサンプルです。
add_filter('woocommerce_available_variation', 'extend_variation_info', 10, 3);
function extend_variation_info($available_variation, $product, $variation) {
$available_variation['extra_info'] = '特別な注意が必要です'; // バリエーションに追加情報
return $available_variation;
}
出典: https://wpengine.com/
サンプルコード5: 条件付きロジックの適用
このコードは、条件に基づいてバリエーション情報を変更するサンプルです。
add_filter('woocommerce_available_variation', 'conditional_variation_change', 10, 3);
function conditional_variation_change($available_variation, $product, $variation) {
if (is_user_logged_in() && $variation->get_attribute('size') === 'large') {
$available_variation['display_price'] += 5; // ログインユーザーに対して大サイズの追加料金
}
return $available_variation;
}
出典: https://codex.wordpress.org/