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

概要

woocommerce_variation_is_visible フィルタは、WooCommerceで商品バリエーションの可視性を制御するために使用されるフックです。このフィルタを使うことで、特定の条件に基づいてバリエーションが表示されるかどうかを変更できます。例えば、特定の在庫状況や属性に応じて、バリエーションを隠したり表示したりすることが可能です。

このフィルタは、次のような機能を実装する際によく使われます:

  1. 在庫切れのバリエーションを非表示にする
  2. 特定のユーザー役割に基づいてバリエーションの可視性を変更する
  3. 特定の条件に合致するバリエーションを非表示にする
  4. クッキーやセッション情報を用いての可視性制御
  5. 特定の期間に応じたバリエーションの表示/非表示
  6. SEO対策としての非表示バリエーション管理

構文

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

パラメータ

  • bool $is_visible: バリエーションが表示されるかどうかを示すブール値。
  • int $variation_id: 対象のバリエーションのID。

戻り値

バリエーションが表示される場合は true、非表示の場合は false

使用可能なWooCommerceのバージョン

このフィルタはWooCommerce 2.0以降で利用可能です。

使用可能なWordPressのバージョン

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_variation_is_visible', 'hide_out_of_stock_variations', 10, 2 );

function hide_out_of_stock_variations( $is_visible, $variation_id ) {
    $variation = new WC_Product_Variation( $variation_id );
    if ( ! $variation->is_in_stock() ) {
        return false; // 在庫切れのバリエーションは非表示
    }
    return $is_visible;
}

このコードは、在庫がないバリエーションを非表示にします。これにより、ユーザーが選べる選択肢を制限します。

サンプルコード2

add_filter( 'woocommerce_variation_is_visible', 'show_variation_for_logged_in_users', 10, 2 );

function show_variation_for_logged_in_users( $is_visible, $variation_id ) {
    if ( ! is_user_logged_in() ) {
        return false; // ログインしていないユーザーにはバリエーションを非表示
    }
    return $is_visible;
}

このコードは、ログインしていないユーザーにはすべてのバリエーションを非表示にします。

サンプルコード3

add_filter( 'woocommerce_variation_is_visible', 'conditional_variation_visibility', 10, 2 );

function conditional_variation_visibility( $is_visible, $variation_id ) {
    $product = wc_get_product( $variation_id );
    if ( $product->get_attribute( 'color' ) === 'red' ) {
        return true; // 赤色のバリエーションは常に表示
    }
    return $is_visible;
}

このコードでは、特定の属性(色)が「赤」のバリエーションは常に可視に設定しています。

サンプルコード4

add_filter( 'woocommerce_variation_is_visible', 'hide_variations_by_time', 10, 2 );

function hide_variations_by_time( $is_visible, $variation_id ) {
    $current_hour = date('G');
    if ( $current_hour >= 18 ) {
        return false; // 18時以降はすべてのバリエーションを非表示
    }
    return $is_visible;
}

このコードは、18時以降のバリエーションをすべて非表示にします。

サンプルコード5

add_filter( 'woocommerce_variation_is_visible', 'custom_cookie_based_visibility', 10, 2 );

function custom_cookie_based_visibility( $is_visible, $variation_id ) {
    if ( isset($_COOKIE['show_variations']) && $_COOKIE['show_variations'] == 'no' ) {
        return false; // クッキーに基づいて非表示
    }
    return $is_visible;
}

このコードは、特定のクッキーの値に基づいてバリエーションの可視性を制御します。このクッキーが「no」に設定されている場合、バリエーションは非表示になります。

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


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