Tovább a tartalomhoz

A kereső testreszabása kóddal

További mezők a keresőűrlapon, leírás a találatokban és saját találati elrendezés a Kereső kiegészítő horgaival.

A keresőűrlap és a találatok megjelenését néhány horoggal (WordPress-szűrővel) módosíthatod. A kódot a sablonod functions.php fájljába (vagy egy saját bővítménybe) kell tenned. A példák kiindulási minták: a saját oldaladhoz igazítsd őket.

A wpbs_search_widget_additional_fields szűrővel új mezőket adhatsz a keresőűrlaphoz. A mezők a dátummezők mellett jelennek meg.

https://minta-bolt.hu/szallaskereso/
A keresőűrlap egy további, „Helyszín” legördülő mezővel

Figyeld meg, hogy a Kezdés dátuma és a Befejezés dátuma mellett ott a saját meződ is.

Minden mezőt egy tömb ír le a következő kulcsokkal:

Kulcs Mit csinál Alapérték
name A mező neve, ez látszik az űrlapon. üres
slug A mező azonosítója. Ha üresen hagyod, a névből készül (wpbs-search-<név>). a névből
type A mező típusa: dropdown (legördülő lista) vagy text (szöveg). üres
required Kötelező-e kitölteni (true vagy false). false
required_message A hibaüzenet, ha a kötelező mező üres. „A(z) … mező nem lehet üres.” jellegű alapüzenet
placeholder A mezőben látszó segédszöveg. üres
values A legördülő lista értékei, csak dropdown típusnál. üres lista
validation Szűrőfüggvény: eldönti, hogy egy naptár megfelel-e a mező értékének. minden naptár megfelel

A validation függvény két paramétert kap: a látogató által választott értéket ($value) és a naptár adatait ($data). Ebből a $data['calendar_id'] a naptár azonosítója, a $data['post_id'] a naptárhoz rendelt bejegyzés azonosítója. true esetén a naptár szerepelhet a találatok között (ha a dátumok szabadok), false esetén kiesik.

1. példa: szűrés a bejegyzés meta-értéke szerint

Szekció neve “1. példa: szűrés a bejegyzés meta-értéke szerint”

Az új mező a naptárhoz rendelt bejegyzés valamelyik egyéni mezőjét (meta-értékét) hasonlítja a választott értékhez. Itt az ACF number_of_people mezőjével: ha a naptár kevesebb főt fogad, mint amennyit a látogató választott, kiesik a találatokból.

add_filter('wpbs_search_widget_additional_fields', function ($fields) {
$fields[] = array(
'name' => 'Személyek',
'type' => 'dropdown',
'required' => true,
'placeholder' => '',
'values' => [1, 2, 3, 4],
'validation' => function ($value, $data) {
$post_id = $data['post_id'];
if (function_exists('get_field') && get_field('number_of_people', $post_id) < $value) {
return false;
}
return true;
}
);
return $fields;
});

2. példa: szűrés a naptár azonosítója szerint

Szekció neve “2. példa: szűrés a naptár azonosítója szerint”

A mező értéke alapján más-más naptárakat jeleníthetsz meg. A példában a „Város” választásakor csak az 1., 2. és 3. naptár jelenik meg (ha szabadok a dátumok), a „Part” választásakor a 4., 5. és 6.

add_filter('wpbs_search_widget_additional_fields', function ($fields) {
$fields[] = array(
'name' => 'Helyszín',
'type' => 'dropdown',
'required' => true,
'placeholder' => '',
'values' => ['Város', 'Part'],
'validation' => function ($value, $data) {
$calendar_id = $data['calendar_id'];
if ($value == 'Város' && in_array($calendar_id, [1, 2, 3])) {
return true;
}
if ($value == 'Part' && in_array($calendar_id, [4, 5, 6])) {
return true;
}
return false;
}
);
return $fields;
});

A találatokban alapból nincs leírás, mert a naptárhoz nem tartozik erre szolgáló mező. A wpbs_search_result_after_title szűrővel a találat címe alá írhatsz egy rövid szöveget. A szöveg forrása lehet egyéni meta-mező, ACF-mező vagy a bejegyzés kivonata (ha van); azt használd, amelyik nálad megvan.

add_filter('wpbs_search_result_after_title', function ($output, $data) {
// egyéni meta-mezőből
$description = get_post_meta($data['post_id'], 'description_text', true);
// vagy ACF-mezőből
// $description = get_field('description_text', $data['post_id']);
// vagy a bejegyzés kivonatából
// $description = get_the_excerpt($data['post_id']);
if ($description) {
$output .= '<p>' . $description . '</p>';
}
return $output;
}, 10, 2);

A három forrásból egyet válassz, a többi sort töröld vagy hagyd kommentben.

A találatok elrendezésének módosítása

Szekció neve “A találatok elrendezésének módosítása”

Az egyes találatok HTML-jét a wpbs_search_resuts_html szűrő adja át, itt átírhatod vagy teljesen lecserélheted. A szűrő neve a bővítményben így van írva (az „results” szóból kimarad az „l”), pontosan így használd.

A függvény $output paramétere a találat kész HTML-je, a $data tömb pedig az alapadatokat tartalmazza:

Kulcs Tartalma
calendar_name A naptár neve.
link A naptár oldalán beállított hivatkozás: üres, egy oldal vagy bejegyzés permalinkje, vagy külső hivatkozás.
post_id A bejegyzés azonosítója, ha a hivatkozás típusa belső hivatkozás.
button_label A megtekintés gomb felirata.
price A kiválasztott időszak árai: az összár és az éjszakánkénti ár.
add_filter('wpbs_search_resuts_html', function ($output, $data) {
// ide építsd a saját HTML-t
return $output;
}, 10, 2);

A kisebb kiegészítésekhez nem kell az egész találatot lecserélni. Ezekkel a szűrőkkel a megfelelő helyre szúrhatsz be tartalmat: wpbs_search_result_before_title, wpbs_search_result_after_title, wpbs_search_result_before_button, wpbs_search_result_after_button.

Készült:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások