概要
woocommerce_is_filtered
フィルタは、WooCommerceでの商品やオーダーのリストを取得する際に使用されるフックです。このフィルタを用いることで、特定の条件に応じて商品リストがフィルタリングされているかどうかを判定し、それに基づいて処理を行うことができます。
このフィルタは以下のような機能を実装する際によく使われます:
- 商品のフィルタリング状況に応じたカスタマイズ
- 特定のカテゴリーやタグに対する表示制御
- サイトのカスタムクエリの最適化
- 商品の並び替え条件の変更
- 特定の条件に基づいたユーザーへのフィードバック
- 商品の購入状況に基づくカスタマイズアクションの実行
構文
add_filter('woocommerce_is_filtered', 'your_function_name', 10, 2);
パラメータ
$filtered
(boolean): フィルタリングが行われているかどうかの真偽値$query
(WP_Query): 現在実行中のクエリオブジェクト
戻り値
- フィルタリング状態を示す真偽値(trueまたはfalse)
使用可能なバージョン
- WooCommerce: 2.0以降
- WordPress: 4.0以降
サンプルコード
サンプル1: 商品リストがフィルタリングされているか確認
add_filter('woocommerce_is_filtered', function($filtered) {
if (is_product_category()) {
$filtered = true;
}
return $filtered;
});
このサンプルコードは、商品カテゴリーページでフィルタリングが行われているかを確認し、フィルタリング状態をtrueに設定します。
サンプル2: カスタムメッセージの表示
add_filter('woocommerce_is_filtered', function($filtered) {
if ($filtered) {
echo '<p>現在のフィルタが適用されています。</p>';
}
return $filtered;
});
フィルタが適用されている場合に、カスタムメッセージを表示します。
サンプル3: フィルタの状態に基づく特定のアクション
add_filter('woocommerce_is_filtered', function($filtered) {
if ($filtered) {
// 特定の処理を実行
// 例: エクスポートボタンの表示
add_action('woocommerce_after_shop_loop', 'show_export_button');
}
return $filtered;
});
フィルタが適用されている場合に特定の処理(この例ではエクスポートボタンの表示)を実行します。
サンプル4: 複数の条件をチェック
add_filter('woocommerce_is_filtered', function($filtered, $query) {
if (isset($_GET['filter']) && $query->is_main_query()) {
$filtered = true;
}
return $filtered;
}, 10, 2);
GETパラメータにフィルタが設定され、メインクエリであるかを確認してフィルタリング状態を設定します。
サンプル5: 商品タグページでのフィルタリング確認
add_filter('woocommerce_is_filtered', function($filtered) {
if (is_product_tag()) {
$filtered = true;
}
return $filtered;
});
このコードは、商品タグページでフィルタリングされているかどうかをチェックし、当てはまる場合はtrueを返します。
この関数のアクションでの使用可能性
アクション | 使用例 |
---|---|
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 |