ページごとに異なるWooCommerceフィルターを表示する方法
HUSKY WooCommerce フィルターの [woof] ショートコードは、表示するフィルターや、それらが表示する商品を制御できる属性を受け付けます。
主な属性:
tax_only– 特定のタクソノミーのみを表示(カテゴリー、属性)by_only– 特定の非タクソノミーフィルターのみを表示(価格、SKU、在庫など)taxonomies– 特定のタクソノミー項のみを表示(動的再計算と併用)
ショートコードの例
特定のタクソノミーをフィルターする
カテゴリーとブランドのフィルターのみを表示:
[woof tax_only="product_cat,pa_brand"]
非タクソノミー要素をフィルターする
価格、SKU、在庫のフィルターのみを表示:
[woof by_only="by_price,by_sku,by_instock"]
組み合わせ:タクソノミー+非タクソノミーフィルター
特定のタクソノミーと非タクソノミーフィルターを表示:
[woof tax_only="product_cat,pa_size,pa_color" by_only="by_price,by_instock"]
taxonomies 属性の使用(動的再計算用)
特定のタクソノミーから特定の項のみを表示:
[woof taxonomies="product_cat:35,42,58+pa_brand:nike,adidas"]
注記: taxonomies 属性は、「動的再計算」または「空のオプションを非表示」が有効になっている場合に使用します。
完全なセットアップガイド
ステップ 1:ショートコードを作成する
各ページに適した属性を持つ、異なる [woof] ショートコードを作成します。
例:
- サプライヤー A:
[woof tax_only="product_cat,pa_size,pa_color" by_only="by_price"] - サプライヤー B:
[woof taxonomies="product_cat:50+pa_brand:nike,adidas" by_only="by_price"]
ステップ 2:ウィジェットにショートコードを配置する
- 外観 → ウィジェット に移動します
- サイドバーに テキスト または カスタム HTML ウィジェットを追加します
- ウィジェットにショートコードを貼り付けます
- 各ショートコードごとに個別のウィジェットを作成します
ステップ 3:条件付きウィジェットプラグインをインストールする
ページ条件に基づいてウィジェットの表示を制御するためのプラグインが必要です。
いずれかを選択:
- Widget Logic – https://wordpress.org/plugins/widget-logic/
- Show WordPress Widget by Logic – https://github.com/realmag777/Show-WordPress-Widget-by-Logic
ステップ 4:表示条件を設定する
各ウィジェットに条件ロジックを追加して、表示される場所を制御します。
条件ロジックの例
特定のページにフィルターを表示する
ページスラッグで指定:
is_page('supplier-nike')
ページ ID で指定:
is_page(123)
複数のページにフィルターを表示する
is_page(array('supplier-1', 'supplier-2', 'supplier-3'))
カテゴリーアーカイブにフィルターを表示する
カテゴリー ID で指定:
is_product_category(35)
カテゴリースラッグで指定:
is_product_category('electronics')
カスタムタクソノミーにフィルターを表示する
is_tax('supplier', 'nike-products')
特定のページを除外する
ページ 123 を除くすべてのページに表示:
!is_page(123)
セットアップの完全な例
シナリオ:異なるフィルターを持つ 3 つのサプライヤー
サプライヤー A(Nike)– ページ ID:123
- ショートコード:
[woof tax_only="product_cat,pa_size,pa_color" by_only="by_price"] - ウィジェット条件:
is_page(123) - 結果: サイズ、色、価格フィルターとともにすべての商品カテゴリーを表示
サプライヤー B(Adidas)– ページスラッグ:adidas-products
- ショートコード:
[woof taxonomies="product_cat:40,41,42" by_only="by_instock"] - ウィジェット条件:
is_page('adidas-products') - 結果: 在庫フィルターとともにカテゴリー 40、41、42 のみを表示
サプライヤー C – カテゴリーアーカイブ ID:50
- ショートコード:
[woof tax_only="product_cat,pa_brand" by_only="by_price,by_sku"] - ウィジェット条件:
is_product_category(50) - 結果: カテゴリー、ブランド、価格、SKU フィルターを表示
属性について
tax_only と taxonomies の違い
tax_only を使用する場合:
- タクソノミー全体(すべての項)を表示したい場合
- 例:
tax_only="product_cat,pa_brand"はすべてのカテゴリーとすべてのブランドを表示
taxonomies を使用する場合:
- 「動的再計算」または「空のオプションを非表示」が有効になっている場合
- 特定のタクソノミーから特定の項のみを表示したい場合
- 例:
taxonomies="product_cat:35,42+pa_brand:nike"はカテゴリー 35 と 42、および Nike ブランドのみを表示
by_only の値
by_only で使用可能な非タクソノミーフィルター:
by_price– 価格範囲スライダーby_sku– SKU による検索by_text– テキスト検索by_author– 作成者でフィルターby_onsales– セール中商品のみ表示by_instock– 在庫あり商品のみ表示- メタフィールドキー(WOOF 設定で有効な場合)
by_only="none" を使用して、すべての非タクソノミーフィルターを非表示にします。
ID とスラッグの確認方法
カテゴリー ID
- 商品 → カテゴリー に移動します
- カテゴリー名にマウスを合わせます
- ブラウザのステータスバーまたは URL を確認します
tag_ID=35を見つけます – 数値がカテゴリー ID です
ページ ID
- ページ に移動します
- ページ名にマウスを合わせます
- URL を確認します:
post=123 - 数値がページ ID です
属性スラッグ
- 商品 → 属性 に移動します
- 属性スラッグは
pa_で始まります - 例:
pa_brand、pa_size、pa_color、pa_material
セットアップのテスト
- まずショートコードをテストする
- テストページに直接ショートコードを配置します
- フィルターが正しく表示されることを確認します
- フィルタリングが機能することを確認します
- ウィジェットの表示をテストする
- フィルターが表示されるべき各ページにアクセスします
- 正しいフィルターが表示されることを確認します
- 他のフィルターが表示されないことを確認します
- 各ページにフィルターが 1 つだけであることを確認する
- 同じページに複数のフィルターがあると競合します
- ウィジェット条件を使用して排他性を確保します
重要な制限事項
各ページに 1 つのフィルターのみ: 1 つのページで同時にアクティブにできる WOOF フィルターは 1 つだけです。複数のフィルターは競合します。
解決策: ウィジェットの条件ロジックを使用して、各ページに 1 つのフィルターウィジェットのみが表示されるようにします。
ヒント
- 最初にショートコードを直接テストする
- ウィジェットに追加する前に、通常のページでショートコードをテストします
- 属性が正しいことを確認します
- 排他的な条件を使用する
- ウィジェット条件が重複しないようにします
- 各ページで表示されるフィルターは 1 つだけにします
- 否定条件
!is_page(123)を使用して特定のページを除外します- 「例外を除くすべてのページに表示」シナリオに便利です
- 属性スラッグを確認する
- 属性スラッグは
pa_で始まる必要があります - スラッグが間違っているとフィルターは表示されません
- 属性スラッグは
完全なドキュメント
ショートコード属性の完全なリファレンス:https://products-filter.com/shortcode/woof
トラブルシューティング
フィルターが表示されない
考えられる原因:
- 現在のページに対してウィジェット条件が false である
- ショートコード属性が正しくない
- カテゴリー/属性 ID が存在しない
- 複数のフィルターが競合している
解決策:
- ページ ID/スラッグが条件と一致することを確認する
- 商品 → カテゴリーでカテゴリー ID を確認する
- 最初に通常のページでショートコードをテストする
- 各ページにフィルターウィジェットが 1 つだけであることを確認する
誤った商品が表示される
考えられる原因:
- カテゴリー ID が正しくない
- 属性スラッグが間違っている
- 誤った属性を使用している(
tax_onlyとtaxonomies)
解決策:
- カテゴリー ID を再確認する
- 属性スラッグが
pa_で始まることを確認する - 動的再計算が有効な場合は
taxonomiesを使用する - 最初にシンプルなショートコードでテストする
複数のフィルターが表示される
原因: ウィジェット条件が重複している
解決策:
- すべてのウィジェット条件を見直す
- 相互排他性を確保する
- 否定条件を使用して区別する
フィルターが誤ったページに表示される
原因: ウィジェット条件が広すぎる
解決策:
- 条件をより具体的にする
- 必要に応じてカテゴリーの代わりにページ ID を使用する
- 条件ロジックを慎重にテストする
まとめ
異なるページに異なるフィルターを表示するには:
[woof]属性やtax_only属性を指定してカスタムのby_onlyショートコードを作成する- 各ショートコードを個別のテキスト/HTML ウィジェットに配置する
- Widget Logic プラグインをインストールする
- 各ウィジェットに条件ロジックを追加する(例:
is_page(123)) - 各ページに 1 つのフィルターのみが表示されることをテストする
注意: 各ページでアクティブにできるフィルターは 1 つだけです。ウィジェット条件を使用して排他性を確保してください。