概要
woocommerce_product_is_visible
フィルタは、WooCommerceにおいて製品の表示可否を制御するために使用されます。このフィルタを使うことで、特定の条件に基づいて商品が公開されるかどうかを動的に変更することができます。
このフィルタは主に以下の機能を実装する際に利用されます:
- 特定のユーザーグループに対する商品の表示制御
- 在庫がない商品の非表示設定
- シーズンやキャンペーンに応じた商品表示の調整
- 商品のカスタムメタデータに基づく表示可否の判定
- 地域や国に基づく商品表示の制御
- プライベート商品の公開制御
構文
add_filter('woocommerce_product_is_visible', 'your_custom_function', 10, 2);
パラメータ
$visible
(bool): 商品が現在表示可能であるかどうかのフラグ。$product
(WC_Product): WooCommerceの商品オブジェクト。
戻り値
- bool: 商品が表示可能である場合は
true
、表示不可の場合はfalse
を返す。
バージョン情報
- WooCommerce: 2.1以上
- 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 |
サンプルコード
以下は woocommerce_product_is_visible
フィルタを使用したサンプルコードです。
サンプルコード1: 特定ユーザーグループに対する表示制御
add_filter('woocommerce_product_is_visible', 'restrict_product_visibility', 10, 2);
function restrict_product_visibility($visible, $product) {
// 特定のロールを持つユーザー以外は非表示
if (!current_user_can('special_role')) {
return false;
}
return $visible;
}
このコードでは、’special_role’を持っていないユーザーには商品を非表示にします。
引用元: https://www.example.com
サンプルコード2: 在庫がない商品を非表示
add_filter('woocommerce_product_is_visible', 'hide_out_of_stock_products', 10, 2);
function hide_out_of_stock_products($visible, $product) {
// 在庫切れの商品を非表示にする
if (!$product->is_in_stock()) {
return false;
}
return $visible;
}
このコードは、在庫切れの商品の表示を自動的に非表示にします。
引用元: https://www.example.com
サンプルコード3: 特定のカテゴリー商品を非表示
add_filter('woocommerce_product_is_visible', 'hide_specific_category', 10, 2);
function hide_specific_category($visible, $product) {
// 特定のカテゴリーに属する商品の非表示
if (has_term('hidden-category', 'product_cat', $product->get_id())) {
return false;
}
return $visible;
}
このコードは、特定のカテゴリーに属する商品の表示を非表示にします。
引用元: https://www.example.com
サンプルコード4: 商品のメタデータに基づく表示制御
add_filter('woocommerce_product_is_visible', 'hide_product_based_on_meta', 10, 2);
function hide_product_based_on_meta($visible, $product) {
// カスタムメタ 'hide_product' が 'yes'の場合に非表示
if ('yes' === get_post_meta($product->get_id(), 'hide_product', true)) {
return false;
}
return $visible;
}
このコードは、カスタムメタデータによって商品を非表示にする機能を提供します。
引用元: https://www.example.com
サンプルコード5: 地域に応じた表示制御
add_filter('woocommerce_product_is_visible', 'local_visibility_control', 10, 2);
function local_visibility_control($visible, $product) {
// 地域に基づいて商品を非表示
if (get_user_meta(get_current_user_id(), 'location', true) !== 'Japan') {
return false;
}
return $visible;
}
このコードでは、ユーザーの地域によって商品を表示するかどうかを制御します。
引用元: https://www.example.com