Filtrering og søk
Tillegget inkluderer et sett med hjelpefunksjoner for å bygge egendefinerte filter- og søkegrensesnitt ved hjelp av malfunksjoner.
Hvordan filtrering fungerer
Section titled “Hvordan filtrering fungerer”Filtrering gjøres gjennom URL-spørringsparametere. Når en side lastes med ?workplace=oslo, begrenses stillingsstrømmen automatisk til stillinger der arbeidsstedfeltet inneholder «Oslo».
Tillegget tilbyr hjelpefunksjoner for å bygge filter-URL-er, telle treff og sjekke aktiv tilstand.
Fritekstsøk
Section titled “Fritekstsøk”Legg til et enkelt søkeskjema som søker på tvers av all stillingsdata:
<form method="get"> <label for="jobSearch">Søk</label> <input type="text" value="<?php echo $_GET['jobSearch'] ?? ''; ?>" name="jobSearch" id="jobSearch" /> <button type="submit">Søk</button></form>get_jobpost_filters()
Section titled “get_jobpost_filters()”Returnerer en liste over alle distinkte verdier for et gitt felt på tvers av alle stillingsannonser. Bruk dette til å bygge filteralternativer.
Syntaks
Section titled “Syntaks”get_jobpost_filters( $field, $reduce_by_filter );| Parameter | Type | Påkrevd | Beskrivelse |
|---|---|---|---|
$field | string | Ja | Feltnavnet |
$reduce_by_filter | bool | Nei | Hvis true, returneres bare verdier som matcher gjeldende filter. Standard: false |
Eksempel
Section titled “Eksempel”<?php$locations = get_jobpost_filters('workplace');
if ($locations): echo "<h3>Steder</h3><ul>"; foreach ($locations as $location): $url = get_jobpost_filter_url('workplace', $location); echo "<li><a href='$url'>$location</a></li>"; endforeach; echo "</ul>";endif;?>get_jobpost_filter_url()
Section titled “get_jobpost_filter_url()”Genererer en URL som slår et filter av eller på. Hvis filteret allerede er aktivt, fjerner URL-en det.
Syntaks
Section titled “Syntaks”get_jobpost_filter_url( $field, $value );| Parameter | Type | Påkrevd | Beskrivelse |
|---|---|---|---|
$field | string | Ja | Feltet det skal filtreres etter |
$value | string | Ja | Verdien det skal filtreres etter |
Eksempel
Section titled “Eksempel”<?php$url = get_jobpost_filter_url('workplace', 'Oslo');echo "<a href='$url'>Oslo</a>";?>get_jobpost_filter_count()
Section titled “get_jobpost_filter_count()”Returnerer antall stillinger som matcher en spesifikk filterverdi.
Syntaks
Section titled “Syntaks”get_jobpost_filter_count( $field, $value );Eksempel
Section titled “Eksempel”<?php$url = get_jobpost_filter_url('workplace', 'Oslo');$count = get_jobpost_filter_count('workplace', 'Oslo');echo "<a href='$url'>Oslo ($count)</a>";?>has_jobpost_filter()
Section titled “has_jobpost_filter()”Sjekk om et filter er aktivt.
Syntaks
Section titled “Syntaks”has_jobpost_filter( $field, $value );| Parameter | Type | Påkrevd | Beskrivelse |
|---|---|---|---|
$field | string | Ja | Feltnavnet |
$value | string | Nei | Hvis satt, sjekkes om denne spesifikke verdien er aktiv |
Komplett filterfunksjon
Section titled “Komplett filterfunksjon”Her er en gjenbrukbar funksjon som kombinerer alle filterhjelperne:
<?phpfunction jobPostFilter(string $field, string $title, bool $reduce = false) { $items = get_jobpost_filters($field, $reduce);
if (empty($items)) return;
echo "<h3>$title</h3>"; echo "<ul>";
foreach ($items as $item) { $url = get_jobpost_filter_url($field, $item); $count = get_jobpost_filter_count($field, $item); $active = has_jobpost_filter($field, $item) ? 'active' : '';
echo "<li class='$active'>"; echo "<a href='$url' rel='nofollow'>$item ($count)</a>"; echo "</li>"; }
echo "</ul>";}?>
<aside> <div class="job-filter"> <?php jobPostFilter('workplace', 'Sted', true); ?> </div> <div class="job-filter"> <?php jobPostFilter('type', 'Stillingstype', true); ?> </div></aside>Konvertere til en egendefinert kortkode
Section titled “Konvertere til en egendefinert kortkode”Du kan registrere filterfunksjonen som en kortkode i temaets functions.php eller via et kodeutvidelsestillegg:
<?phpfunction jobPostFilter(string $field, string $title, bool $reduce = false) { $items = get_jobpost_filters($field, $reduce); $html = '';
if (empty($items)) return $html;
$html .= "<h3>$title</h3>"; $html .= "<ul>";
foreach ($items as $item) { $url = get_jobpost_filter_url($field, $item); $count = get_jobpost_filter_count($field, $item); $active = has_jobpost_filter($field, $item) ? 'active' : '';
$html .= "<li class='$active'>"; $html .= "<a href='$url' rel='nofollow'>$item ($count)</a>"; $html .= "</li>"; }
$html .= "</ul>"; return $html;}
add_shortcode('job_filter', function ($params = []) { if (!function_exists('have_jobposts')) return '';
$params = array_change_key_case((array) $params, CASE_LOWER); $options = shortcode_atts([ 'field' => 'type', 'title' => 'Stillingstype', 'reduce' => '1' ], $params);
return jobPostFilter( (string) $options['field'], (string) $options['title'], (bool) $options['reduce'] );});
// Bruk: [job_filter field="workplace" title="Sted" reduce="1"]