概要
woocommerce_product_pre_search_products
フィルタは、WooCommerceでの製品検索機能を拡張するために使用されます。このフックは、製品検索前に検索クエリを調整するために利用され、主に次のような機能を実装する際によく使われます。
- カスタムフィールドに基づく検索の実装
- 特定の製品カテゴリのフィルター
- ユーザーの権限に基づいた製品の非表示
- 独自の検索アルゴリズムの実装
- 製品の価格や在庫状況に基づくフィルタリング
- サードパーティサービスとの統合による検索結果のカスタマイズ
構文
add_filter('woocommerce_product_pre_search_products', 'your_custom_function', 10, 2);
パラメータ
$products
: 検索結果の商品一覧$query
: 検索クエリ
戻り値
$products
: フィルタリングされた商品一覧
バージョン情報
- 使用可能なWooCommerceバージョン: 2.6 以降
- 使用可能なWordPressバージョン: 4.0 以降
サンプルコード
サンプルコード 1: カスタムフィールドによる検索調整
このコードは、カスタムフィールドに基づいて検索結果をフィルタリングします。
add_filter('woocommerce_product_pre_search_products', function($products, $query) {
global $wpdb;
$custom_field_value = sanitize_text_field($query);
$products = $wpdb->get_results("
SELECT * FROM {$wpdb->prefix}posts
WHERE post_type = 'product'
AND meta_key = 'your_custom_field'
AND meta_value LIKE '%$custom_field_value%'
");
return $products;
}, 10, 2);
サンプルコード 2: 特定カテゴリのフィルタリング
特定カテゴリに属する製品のみを検索するサンプルです。
add_filter('woocommerce_product_pre_search_products', function($products, $query) {
$query['category_name'] = 'specific-category';
return $products;
}, 10, 2);
サンプルコード 3: ユーザーの権限に基づく商品非表示
ユーザーのロールに応じて商品を非表示にする例です。
add_filter('woocommerce_product_pre_search_products', function($products, $query) {
if (!current_user_can('administrator')) {
foreach ($products as $key => $product) {
if ($product->ID === 'specific_product_id') {
unset($products[$key]);
}
}
}
return $products;
}, 10, 2);
サンプルコード 4: 独自検索アルゴリズムの実装
独自の検索ロジックを実装するサンプルです。
add_filter('woocommerce_product_pre_search_products', function($products, $query) {
// カスタムの検索ロジックをここに記載
if (strpos($query, 'special') !== false) {
// 特別な条件に基づいて製品をフィルタリング
}
return $products;
}, 10, 2);
サンプルコード 5: 製品の価格に基づくフィルタリング
製品の価格帯に基づいて検索結果を絞り込む例です。
add_filter('woocommerce_product_pre_search_products', function($products, $query) {
$min_price = 10; // 最小価格
$max_price = 100; // 最大価格
foreach ($products as $key => $product) {
if ($product->price < $min_price || $product->price > $max_price) {
unset($products[$key]);
}
}
return $products;
}, 10, 2);
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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_pre_search_products
フィルタは、WooCommerceの製品検索をカスタマイズする強力な方法を提供します。