# Termékek szűrése cím szerint

> WooCommerce-termékek szűrése a címük alapján: Kiválasztás szűrő a p lekérdezési változóval, és Keresés szűrő egyéni PHP-részlettel.

Termékeket cím szerint kétféleképp szűrhetsz: legördülő (vagy választógombos, jelölőnégyzetes) listával, amelyben a termékek címei opcióként szerepelnek, vagy keresőmezővel.

## Követelmények

- Elementor (az ingyenes is elég), blokkszerkesztő vagy Bricks.
- Aktív WooCommerce és JetSmartFilters.

## Kiválasztás szűrő a termékcímekkel

### A szűrő létrehozása

1. Nyisd meg az **Intelligens szűrők → Új hozzáadása** oldalt.
2. Adj nevet a szűrőnek, és válaszd a **Kiválasztás** típust. Használhatod a **Választógomb** vagy a **Jelölőnégyzetek listája** típust is.
3. Az adatforrás legyen **Bejegyzések**, a **Helykitöltő** mezőt hagyhatod az alapértéken.
4. A **Bejegyzés típusa** mezőben válaszd a **Products** (termékek) lehetőséget.
5. A **Lekérdezési változó** mező jobb oldalán kattints a dinamikus címke ikonjára, és válaszd a **Plain Query Variable** lehetőséget. A megjelenő **Variable Name** mezőbe írd be: `p`.
6. Mentsd a szűrőt.

![Bejegyzések adatforrású szűrő (termékek)](./kepek/adatforras-bejegyzesek.webp)

*Bejegyzések adatforrású szűrő (termékek)* (https://minta-bolt.hu/wp-admin/admin.php?page=jet-smart-filters)

A képen az adatforrás **Bejegyzések**, alatta a **Bejegyzés típusa** mező látszik. A **Lekérdezési változó** mezőbe (a dinamikus címke ikonnal) kerül a `p` érték.

### A szűrő felvétele az oldalra

A szűrőt az oldalon úgy kell elhelyezni és a termékeket kiíró elemhez kötni, ahogy a WooCommerce archívumnál vagy a termékrácsnál. Az **Intelligens szűrők → Beállítások → Általános beállítások** oldalon láthatod, mely widgetekkel kompatibilis a bővítmény. A példában a szűrőt a JetWooBuilder **Products Grid** widgetjéhez kötjük (lásd a [Szűrők és lapozás a JetWooBuilder Products Gridhez](https://hub.hellowp.io/hu/plugins/jet-smart-filters/widgetek-termekracs/) fejezetet), majd közzéteszed az oldalt.

A nyilvános oldalon a legördülő listából kiválasztott terméknév (például „Sapka”) esetén csak az a termék marad a rácsban.

## Keresés szűrő a termékcímekre

A beépített **Keresés** szűrő a címre nem keres külön, ehhez egy kis PHP-kód kell.

### A kód felvétele

Add hozzá az alábbi osztályt az aktív gyermektéma `functions.php` fájljához (**Megjelenés → Témafájl-szerkesztő → functions.php**), vagy egy kódrészletkezelő bővítményhez:

```php
<?php

class JSF_Search_By_Post_Tiltle {

    public $key = 'search__post_title';

    public function __construct() {
        add_filter( 'jet-smart-filters/query/final-query', array( $this, 'modify_query' ) );
    }

    public function modify_query( $query ) {

        if ( ! isset( $query['meta_query'] ) ) {
            return $query;
        }

        foreach ( $query['meta_query'] as $key => $item ) {
            if ( false !== strpos( $item['key'], $this->key ) ) {

                unset( $query['meta_query'][$key] );

                global $wpdb;

                $sql = "SELECT ID FROM {$wpdb->posts} WHERE post_title LIKE '%{$item['value']}%'";
                $posts = array_column( $wpdb->get_results( $sql, 'ARRAY_A' ), 'ID' );

                if ( ! empty( $posts ) && isset( $query['post__in'] ) ) {
                    $query['post__in'] = array_intersect( $posts, $query['post__in'] );
                } elseif ( ! empty( $posts ) ) {
                    $query['post__in'] = $posts;
                }

                if ( empty( $query['post__in'] ) ) {
                    $query['post__in'] = array( 0 );
                }
            }
        }

        return $query;
    }
}

new JSF_Search_By_Post_Tiltle();
```

A kód kiveszi a lekérdezésből a `search__post_title` kulcsú metaszabályt, és helyette a bejegyzések címében keres a beírt szövegre.

### A keresőszűrő létrehozása

1. Nyisd meg az **Intelligens szűrők → Új hozzáadása** oldalt, adj nevet, és válaszd a **Keresés** típust.
2. A **Keresés módja** mezőben válaszd az **Egyéni mező szerint (lekérdezési változóból)** lehetőséget. A helykitöltő maradhat az alapérték.
3. A **Lekérdezési változó** mezőbe írd be: `search__post_title`.
4. Mentsd a szűrőt.

![Keresés szűrő egyéni mezővel, lekérdezési változóval](./kepek/kereses-egyeni-mezo.webp)

*Keresés szűrő egyéni mezővel, lekérdezési változóval* (https://minta-bolt.hu/wp-admin/admin.php?page=jet-smart-filters)

### Az oldalon

Kösd a keresőszűrőt a **Products Grid** widgethez ugyanúgy, mint a többi szűrőt, és tedd közzé az oldalt. A nyilvános oldalon egy terméknév (például „Polo”) beírása után a rács a találatokat mutatja.
