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

概要

woocommerce_taxonomy_objects_product_visibility フィルタは、WooCommerce の製品の可視性を制御するために使用されます。このフィルタを利用することで、特定の条件に基づいて製品を表示または非表示にすることが可能です。具体的には、商品の一覧ページやショップページで何が表示されるかを調整したい場合に役立ちます。以下のような状況でよく使用されます。

  1. 特定のカテゴリの製品を非表示にする。
  2. 在庫切れの製品を表示しない。
  3. 会員コンテンツとして特定の製品を限定的に表示する。
  4. 限定的なプロモーションのために特定の製品を隠す。
  5. 特定の日付や条件に基づいて製品の可視性を調整する。
  6. ユーザーのロールによって製品の表示を変える。

このフィルタは WooCommerce バージョン 2.0 以降、WordPress バージョン 4.0 以降で利用可能です。

構文

add_filter( 'woocommerce_taxonomy_objects_product_visibility', 'my_custom_function' );

function my_custom_function( $objects ) {
    // 変更するロジック
    return $objects;
}

パラメータ

  • objects (array) – 商品の可視性に関するオブジェクトの配列。

戻り値

  • フィルタ後の商品オブジェクトの配列。

この関数のアクションでの使用可能性

アクション 使用例
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_taxonomy_objects_product_visibility', 'hide_specific_category_products' );

function hide_specific_category_products( $objects ) {
    $excluded_categories = array( 'category-slug' );
    foreach ( $objects as $key => $object ) {
        if ( has_term( $excluded_categories, 'product_cat', $object->ID ) ) {
            unset( $objects[ $key ] );
        }
    }
    return $objects;
}

このサンプルコードは、特定のカテゴリ(ここでは ‘category-slug’)に属している製品をリストから非表示にします。

サンプル2: 在庫切れの製品を非表示にする

add_filter( 'woocommerce_taxonomy_objects_product_visibility', 'hide_out_of_stock_products' );

function hide_out_of_stock_products( $objects ) {
    foreach ( $objects as $key => $object ) {
        if ( ! $object->is_in_stock() ) {
            unset( $objects[ $key ] );
        }
    }
    return $objects;
}

このサンプルは、在庫切れの製品を非表示にします。

サンプル3: 会員専用の製品を表示

add_filter( 'woocommerce_taxonomy_objects_product_visibility', 'show_member_only_products' );

function show_member_only_products( $objects ) {
    if ( ! current_user_can( 'member' ) ) {
        foreach ( $objects as $key => $object ) {
            if ( $object->is_member_only ) {
                unset( $objects[ $key ] );
            }
        }
    }
    return $objects;
}

このコードは、ログインしているユーザーが ‘member’ というロールを持たない場合、会員専用の製品を非表示にします。

サンプル4: 特定日の商品を隠す

add_filter( 'woocommerce_taxonomy_objects_product_visibility', 'hide_products_on_specific_date' );

function hide_products_on_specific_date( $objects ) {
    $today = date( 'Y-m-d' );
    foreach ( $objects as $key => $object ) {
        if ( $object->availability_date == $today ) {
            unset( $objects[ $key ] );
        }
    }
    return $objects;
}

このサンプルは、特定の日に利用可能な製品を非表示にします。

サンプル5: ユーザーのロールによる表示制御

add_filter( 'woocommerce_taxonomy_objects_product_visibility', 'filter_by_user_role' );

function filter_by_user_role( $objects ) {
    if ( current_user_can( 'administrator' ) ) {
        // 管理者のみの製品を表示
        return $objects;
    } else {
        // 一般ユーザーの場合は非表示
        return array();
    }
}

このサンプルコードは、ログインしているユーザーが管理者の場合のみ、製品を表示します。それ以外のロールのユーザーには何も表示されません。

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


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