概要
woocommerce_hide_invisible_variations
フィルタは、WooCommerceのプラグイン内で使用されており、非表示のバリエーションを隠すために使われます。このフィルタは、特定の条件に基づいて製品のバリエーション表示を制御する際に有用です。例えば、以下のようなケースでよく利用されます:
- 在庫がないバリエーションを表示しない
- 特定の条件を満たさないバリエーションの非表示
- UX(ユーザーエクスペリエンス)の改善
- 商品リストをクリーンに保つ
- 特定のユーザーや役割に基づくバリエーションの制御
- カスタムロジックを適用して特定のバリエーションを非表示にする
構文
add_filter('woocommerce_hide_invisible_variations', 'custom_function_name', 10, 2);
パラメータ
$hide
(bool) : 初期値はtrueで、バリエーションを隠すかどうかを制御します。$product
(WC_Product) : 現在の製品オブジェクトを含みます。
戻り値
- (bool) : バリエーションを隠すかどうかを示すブール値。
使用可能なプラグインWooCommerceのバージョンとワードプレスのバージョン
- WooCommerce バージョン: 3.0以上
- WordPress バージョン: 4.0以上
サンプルコード
サンプルコード1: 在庫がないバリエーションを非表示にする
このコードは、在庫がないバリエーションをリストから非表示にします。
add_filter('woocommerce_hide_invisible_variations', 'hide_out_of_stock_variations', 10, 2);
function hide_out_of_stock_variations($hide, $product) {
if ($product->is_type('variable')) {
foreach ($product->get_available_variations() as $variation) {
if (!$variation['is_in_stock']) {
return true;
}
}
}
return $hide;
}
引用元: WooCommerce公式ドキュメント
サンプルコード2: 特定のユーザーに非表示のバリエーションを適用
このコードは、特定のユーザー(管理者でないユーザー)に対して非表示のバリエーションを適用します。
add_filter('woocommerce_hide_invisible_variations', 'hide_variations_for_non_admins', 10, 2);
function hide_variations_for_non_admins($hide, $product) {
if (!current_user_can('administrator')) {
return true; // 非管理者にはバリエーションを非表示
}
return $hide;
}
引用元: WooCommerce公式ドキュメント
サンプルコード3: 特定のカテゴリのバリエーションを非表示にする
このコードは、特定のカテゴリに属する製品のバリエーションを非表示にします。
add_filter('woocommerce_hide_invisible_variations', 'hide_variations_by_category', 10, 2);
function hide_variations_by_category($hide, $product) {
if (has_term('special-category', 'product_cat', $product->get_id())) {
return true; // 特定カテゴリならバリエーションを非表示
}
return $hide;
}
引用元: WooCommerce公式ドキュメント
サンプルコード4: プロモーションの条件に基づくバリエーションの非表示
このコードは、プロモーションが適用されていない場合、バリエーションを非表示にします。
add_filter('woocommerce_hide_invisible_variations', 'hide_variations_without_promo', 10, 2);
function hide_variations_without_promo($hide, $product) {
if (!$product->is_on_sale()) {
return true; // プロモーションがない場合はバリエーションを非表示にする
}
return $hide;
}
引用元: WooCommerce公式ドキュメント
サンプルコード5: カスタムフィールドによるバリエーションの制御
このコードは、カスタムフィールドの値に基づいてバリエーションを非表示にします。
add_filter('woocommerce_hide_invisible_variations', 'hide_variations_by_custom_field', 10, 2);
function hide_variations_by_custom_field($hide, $product) {
$custom_field_value = get_post_meta($product->get_id(), 'hide_variations', true);
if ($custom_field_value === 'yes') {
return true; // カスタムフィールドが'yes'の場合は非表示
}
return $hide;
}
引用元: WooCommerce公式ドキュメント
この関数のアクションでの使用可能性
アクション | 使用可能性 |
---|---|
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 |
このフィルタは、主にWooCommerce内で商品表示に関するカスタマイズで利用されています。各サンプルコードを参考にすることで、具体的なニーズに基づいたバリエーションの表示を制御することが可能です。