Suodata lisäkenttien mukaan WordPressissä. Ajax-taksonomiasuodattimen lisääminen WordPress-hakuun

Nykyään WordPress on yksi maailman suosituimmista sisällönhallintajärjestelmistä. Yksi syistä, miksi se on ansainnut niin suosion, on kyky laajentaa toimintoja nopeasti. Tässä artikkelisarjassa käsittelemme suodattimia, jotka ovat yksi parhaista tavoista hienosäätää WordPressiä.

Tämä menetelmä perustuu WordPress-suodattimeen ja toimintakoukkuihin. Ilman niitä emme voi hyödyntää kaikkia WordPressin laajennettavuutta. Tässä artikkelisarjassa keskitymme WP:n suodattimiin – yhteen tämän sisällönhallintajärjestelmän parhaista mukauttamismenetelmistä. Sarja koostuu seitsemästä osasta. Niissä keskitämme kaiken huomiomme seuraaviin:

  • määritellä WordPress-suodattimen käsitteet;
  • Katsotaanpa menetelmiä niiden tuomiseksi järjestelmään;
  • Annamme käyttöesimerkkejä ( artikkelissa, jota nyt luet);
  • Tutkitaan 50 WordPress-suodatinta ( kymmenen jokaisessa artikkelissa) esimerkkien kanssa;
  • ja kirjoita lopullinen artikkeli, jossa tehdään yhteenveto tehdystä työstä.

Ytimessä on kirjaimellisesti satoja WordPress-suodattimia ja nämä 50 esimerkkiä ovat vain pieni osa niistä (noin 10 %), joten voit itse lisätä jotain luettelosta ja tarjota esimerkkejä uusien suodattimien käytöstä.

Joka tapauksessa on tullut aika tutustua WordPress-suodattimiin. Aloitetaan!

Mikä on WordPress - suodatin

WordPress Codex määrittelee suodattimet seuraavasti:

Suodattimia käytetään välilinkkinä tietokannan ja selaimen välillä. Tyypillisesti tietojen syöttö ja tulostus WordPressissä käyvät läpi vähintään yhden suodattimen. Oletuksena WordPressissä on jo suodatus, mutta laajennusten avulla voit lisätä omia suodattimia.

Suodatin on siis PHP-toiminto, joka on kirjoitettu sisäänrakennetun WordPress-suodatinjärjestelmän kutsupinoon. Mutta se voi sisältää kolmannen osapuolen toimintoja ja muita rakenteita. Suodatin on toinen kahdesta koukutyypistä ( koukut) WordPressissä. Toinen on toiminta ( toiminta), mutta se on toisen artikkelisarjan aihe.

Tämä aihe voi tuntua monimutkaiselta sinusta, mutta suodattimet (kuten toiminnot) on erittäin helppo ymmärtää. Näihin käsitteisiin tutustumiseni alussa itse koin kaiken varsin monimutkaisena ja hämmentävänä, mutta nähtyään kuinka yksinkertaisia ​​ne ovat, tutustuin satoihin suodattimiin ja toimintoihin yksinkertaisesti tutkimalla WordPress-koodia tai kaivamalla lähdekoodiin. On varmasti satoja suodattimia, joista sinun pitäisi myös oppia. Mutta ensin sinun on opittava käyttämään niitä.

Suodattimien käyttö WordPressissä

Suodattimien käyttäminen WordPressissä, kuten sanoin, on melko helppoa. Jotkut perustoiminnot kannattaa opetella ja tutustua kunkin suodattimen toimintaan. On syytä myöntää, että kaikkien suodattimien toimivuuden oppiminen kerralla on melko vaikeaa, mutta tätä ei kannata tehdä. Opit tuntemaan heidät työskennellessään tarpeen mukaan.

Tässä artikkelissa aiomme tehdä neljä asiaa:

  • Luodaan suodatinfunktio;
  • Tee siitä koukku;
  • Poista toiminto suodattimesta;
  • Luo oma suodatin.

Luo funktio ja liitä se suodattimeen

Jotta voimme leikkiä suodattimesta saamillamme tiedoilla, meidän on luotava toiminto, joka määrittää, mitä toimia se suorittaa tiedoille ja yhdistää sen sitten suodattimeen.

Oletetaan, että kirjoitamme laajennuksen vokaalien poistamiseksi viestien otsikoista. kirjoittamisen sijaan" poista vokaalit viesteistäni", me kirjoitamme" yhdistää vokaalien poistamisen julkaisujeni otsikoista suodattimeen».

Vaikea? Ei oikeastaan. Alla olevassa esimerkissä kirjoitamme koodin funktiolle, joka poistaa vokaalit kaikesta tekstistä:

Funktio ottaa otsikkomerkkijonon $title, poistaa vokaalit ja palauttaa merkkijonon. Aika yksinkertaista, eikö? Nyt hypätään yksi taso korkeammalle, tehdään koukku ja kiinnitetään se suodattimeen:

Huomasitko uuden ominaisuuden? Katsotaanpa add_filter():

  • $tag ( vaadittu parametri) – suodattimen nimi;
  • $function_to_add ( vaadittu parametri) – koukun toiminnon nimi;
  • $priority (optio) – Kokonaisluku määrittää, milloin toiminto suoritetaan. Oletusarvo on 10: Toiminto toimii aikaisemmin, jos pienennät arvoa, ja myöhemmin, jos lisäät sitä;
  • $accepted_args (valinnainen) – Arvo, joka tarvitaan määrittämään suodattimen hyväksymien argumenttien lukumäärä. Oletusarvo on 1.

Suodattimen irrottaminen

Tietysti voimme myös poistaa suodattimeen liitetyn toiminnon. Tätä varten käytämme Remove_filter()-funktiota. Ja katsotaan kuinka se toimii:

Parametrit ovat samat kuin add_filter():ssä:

  • $tag ( vaadittu parametri) – suodattimen nimi;
  • $function_to_remove ( vaadittu parametri) – poistettavan toiminnon nimi;
  • $priority (optio) - funktion prioriteetti ( määritetään, kun toiminto yhdistetään ensimmäisen kerran).

Toinen funktio, remove_all_filters(), jolla on vain kaksi parametria ( $tag ja $priority), jotka osoittavat funktion nimen ja prioriteetin. Toiminnon nimi puhuu puolestaan. Se poistaa käytöstä kaikki suodattimeen liitetyt toiminnot.

Luo oma suodatin

Haluatko tietää, miten suodattimet luodaan? Tätä varten on erityinen apply_filters()-funktio, joka sijaitsee ytimessä. Tietysti sitä voidaan käyttää myös ytimen ulkopuolella, ja tämä tarkoittaa, että voimme luoda suodattimia laajennuksiemme sisään.
Katsotaan kuinka tämä toimii käytännössä:

  • $tag ( vaadittu parametri) – sidotun funktion nimi;
  • $arvo ( vaadittu parametri) — arvo, jonka suodattimeen add_filter(:n) kautta liitetty funktio muuttaa;
  • $var1, $var2 ja niin edelleen (valinnainen) – suodatinparametrit (niin monta kuin tarvitaan). Suodatintoiminto voi käyttää näitä parametreja, mutta funktiot eivät voi palauttaa niitä.

Ajatellaanpa tätä esimerkkiä: Kuvittele, että kirjoitat funktiota, joka palauttaa vain kuuluisan Peter Griffin -lainauksen:

Jos haluat sallia käyttäjän suodattaa tämän lainauksen ( koskematta laajennuskoodiisi), sinun on käytettävä apply_filters()-funktiota seuraavasti:

Tällä tavalla toinen kehittäjä voi käyttää laajennustasi ja käsitellä toimintotietojasi kuten tässä esimerkissä:

Nyt joka kerta kun peter_griffin_quote()-funktiota kutsutaan, Peterin lainausta muutetaan hieman, mutta laajennuksen koodi pysyy ennallaan. Loistava!

Johtopäätös

Mitä enemmän työskentelet suodattimien kanssa, sitä hauskempaa asiat ovat. Suodattimia on satoja, ja oppimalla ne pääset joka kerta askeleen lähemmäksi WordPress-guruksi tulemista. Tämän artikkelisarjan seuraavassa osassa puhumme 10 WordPress-suodattimesta:

  • login_errors;
  • comment_post_redirect;
  • sallittu_uudelleenohjaus_isännät;
  • body_class;
  • alue;
  • sanitize_user;
  • sisältö;
  • the_password_form;
  • termit;
  • wp_mail_from.

En malta odottaa, että pääsen kirjoittamaan tämän sarjan seuraavaa artikkelia, ja toivon, että pidät siitä yhtä hyödyllistä kuin se on ollut minulle. Jos luulet voivasi auttaa minua opetusohjelmissa ehdottamalla muita suodattimia tai esimerkkejä, voit jakaa ajatuksesi kommenteissa.

Hakukoneen läsnäolo sivustolla vaikuttaa positiivisesti sen käynteihin. Loppujen lopuksi tällä tavalla vierailija löytää nopeasti tarvitsemansa tiedon, vaikka siellä olisi hyvä navigointi tai sivustokartta.

Tavallisten WordPress-työkalujen joukossa on tarvittava hakujärjestelmä, joka voidaan periaatteessa näyttää missä tahansa sivuston osassa. Tietysti tämä on erittäin kätevää, koska tätä joustavuutta voidaan käyttää mitä tahansa teemaa kehitettäessä. Mutta on yksi pointti. Tavallinen hakukone ei anna sinun suodattaa hakutuloksia millään tavalla. Mutta olisi mukavaa saada tämä vaihtoehto, varsinkin jos sivustolla on paljon luokkia tai tunnisteita.

Kuinka lisätä hakusuodatin WordPressiin?

Yksi tapa ratkaista tämä ongelma on käyttää ilmaista WordPress-laajennusta Haku ja suodatin.

Haku ja suodatin -laajennus

Haku ja suodatin -ominaisuuden avulla sivustosi vierailijat voivat tehdä hakuja luokan, tunnisteiden, mukautetun taksonomian, viestityypin, julkaisupäivämäärän tai minkä tahansa näiden yhdistelmän perusteella parantaakseen hakukyselyitä. Suodatinkentät voivat näkyä avattavina valikoina, valintaruutuina, valintanappeina tai useana valinnana.

Ensin laajennus on asennettava ja aktivoitava. Aktivoinnin jälkeen laajennus lisää uuden valikkokohdan Haku ja suodatin WordPressin hallintapaneelissa. Napsauttamalla sitä siirryt laajennuksen käyttösivulle, jossa on yksityiskohtaiset käyttöohjeet sen käytöstä.

On huomattava, että laajennus ei lisää automaattisesti hakusuodattimia sivustolle. Tätä varten se tarjoaa erityisiä lyhytkoodeja, jotka hyväksyvät erilaisia ​​parametreja suodatusvaihtoehtojen näyttämiseksi. Voit käyttää niitä missä tahansa sivustossa, mukaan lukien widgetit, mikä tarjoaa joustavuutta näyttöön ja mukauttamiseen.

Voit esimerkiksi näyttää avattavan luettelon luokista ja tunnisteista hakukentässä käyttämällä seuraavaa lyhytkoodia:

Voit lisätä sen mihin tahansa WordPress-malliin käyttämällä apuohjelmakomentoa do_shortcode(), joka näyttää lyhytkoodin sisällön sivulla. Se näyttää tältä:

Jos lisäät tämän koodin tiedostoon search.php, hakusivu näyttää tältä:

Katsotaanpa toista esimerkkiä, joka sisältää luokat, tunnisteet, viestityypit ja päivämäärät.

Nyt pudotusvalikon valintakentän sijaan voit myös käyttää valintaruutuja ja lisätä tunnisteita jokaiseen kenttään. Tätä varten meidän on lisättävä kaksi muuta parametria lyhytkoodiimme.

Jos käytät erillistä sivua blogitekstiesi näyttämiseen, voit lisätä tämän lyhytkoodin sivulle.

Jos käytät useita kenttiä, tyyppejä ja otsikoita, sinun on varmistettava, että kunkin parametrin elementit ovat samassa järjestyksessä.

Katsotaanpa toinen esimerkki. Tällä kertaa lisäämme luokka-, tunniste- ja viestikenttiä erilaisilla otsikoilla ja lomakekenttätyypeillä.

Näitä lyhytkoodeja voidaan käyttää myös widgeteissä.

Usein on välttämätöntä olla näyttämättä kaikkia luokkia WordPress-blogin pääsivulla. Sinun on suodatettava viestit luokan mukaan. Tässä on kaksi vaihtoehtoa: ensimmäinen suodatin ei näytä joidenkin luokkien tietueita ja toinen on vain valittujen luokkien tietueiden näyttäminen. Mielestäni sinun on useammin käsiteltävä ensimmäistä suodatinta. Halusin suodattaa viestit tiettyyn luokkaan, joka oli täynnä vain viitetietoja. Miksi tehdä pääsivulle joukko lyhyitä postauksia, lisäksi tässä pinossa tulee olemaan myös temaattisia artikkeleita, ja niille minulla on enemmän luokkia kuin taustatietoja. Joten suodatan yhden kategorian viestit pääsivun tulosteesta ja siinä se.

WordPressissä on upea toiminto, joka muuttaa vakiokyselyn tietokannan läpi selaamisen aikana. Tämä on query_posts()-funktio, joka vaatii paljon parametreja, jotka vaikuttavat pyyntöön ja sen seurauksena viestien tuottamiseen sivulle. Minun on määritettävä luokka, jota ei tarvitse näyttää. Näihin tarkoituksiin on useita vaihtoehtoja:

  • parametri luokka__not_in - tietueet, jotka eivät sisälly määritettyyn luokkaan;
  • parametri cat - kategorian tunnus.

Valitsen lyhyemmän.

Kirjoitetaan tapauksemme funktio:

query_posts(array('kissa' => -1));

Sinun on ilmoitettava pilkuilla eroteltujen luokkien arvot, joita ei sisällytetä tuotteeseen. Aseta tämä koodi WordPress-silmukan yläpuolelle pääsivulla "index.php", jolloin määritettyjen luokkien viestejä ei näytetä.

-1, -5));?>

Tämä koodi suodattaa luokat 1 ja 5, joita ei näytetä pääsivulla.
Käynnistetään ja tarkistetaan.

Kaikki toimii - määritettyjen luokkien tietueita ei löydy lähdöstä. Mutta on yksi MUTTA!

Sivun alareunassa, viestien alla, on sivunavigointi. Hallintapaneelissa voit rajoittaa sivulla näytettävien merkintöjen määrää, ja nähdäksesi jäljellä olevat merkinnät sinun on käytettävä tätä navigointia. En vain pystynyt siihen, napsautin navigointilinkkejä, mutta artikkelit ovat edelleen samat. Tehtävä on alkanut, jonka loppupalkintona on ratkaisu sivunavigointiongelmaan. En heti arvannut miksi tämä käytös tapahtui. Kahden tunnin etsinnän jälkeen käy ilmi, että juuri tämä query_posts()-funktion kutsu on syynä tähän sivunavigoinnin käyttäytymiseen. Mutta minun on todellakin poistettava viitetietoja sisältävät kategoriat ja... Etsintä jatkuu.

Olipa pitkä tai lyhyt... Ajattelin lykätä ratkaisun etsimistä. Kuinka jäin koukkuun 'paged'-parametriin. Se vastaa sivun navigoinnista ja navigoinnin normalisoimiseksi sinun on asetettava tälle parametrille get_query_var('paged'), joka ilmaisee nykyisen sivunumeron sivunavigaatiossa.

Tuloksena saamme funktion, joka ohittaa 2 parametria:

-1, "paged" => get_query_var("paged")));?>

Sulje ensimmäinen luokka näyttöä varten ja aseta "paged"-parametri.
Nyt koodi toimii odotetusti.

(Kävijät yhteensä: 1 134, tänään: 1)

Hei kaikille, tänään haluan jatkaa WordPressin etsimisen aihetta. Tällä kertaa kerron sinulle, kuinka voit hakea WordPress-kenttien perusteella (tarkoittaen mukautettuja kenttiä, mukautettuja kenttiä, lisäkenttiä, jotka tunnetaan myös nimellä mukautetut kentät).

Aiemmissa artikkeleissa kerroin ja näytin sinulle, ja myös kuvailin. Näissä aiheissa kosketin osittain WordPress-kenttien perusteella hakemisen aihetta, nyt yritän kuvata sitä tarkemmin.

Miksi tarvitset WordPress-haun lisäkentillä?

Ensinnäkin Wordpress-kenttien haku on tarpeen, jos sinulla ei ole standardia verkkosivustoa tai blogia WP:ssä, siinä mielessä, että tiedot tallennetaan paitsi viestin tekstiin (sisältöön).

Tavallinen WP-hakutoiminto etsii valitettavasti vain viestin tai sivun otsikoista ja tekstistä. Se ei pysty enempään, joten sinun on joko kirjoitettava oma hakutoiminto käyttämällä lisäkenttiä tai käytettävä laajennusta.

Esimerkiksi kiinteistösivustolla, myymälässä, luettelossa jne. mukautettujen kenttien mukaan hakeminen on ehdottoman välttämätöntä. Loppujen lopuksi kuinka löytää tavara kaupasta tuotenumeron tai asunnon osoitteen tai tuotteen muutoksen perusteella. Tietenkin voit kirjoittaa nämä tiedot sivun otsikkoon tai tekstiin, mutta silloin se ei ole sivusto, vaan vain jonkinlainen hirviö. Olen jo kuvaillut tarkemmin, miksi niitä tarvitaan. Siellä oli myös aihe niiden kätevästä käytöstä pluginin avulla.

Haku mukautettujen kenttien perusteella WordPressissä mahdollistaa:

  • näyttää osuvampia tuloksia;
  • manipuloida WP-hakua;
  • näyttää tuloksia, jotka eivät sisällä hakulauseketta (esimerkiksi osoita väärin kirjoitettuja sanoja jne.).

Haun järjestäminen WordPress-kentillä

Mielestäni on monia vaihtoehtoja haun toteuttamiseen mukautetuilla kentillä, yksi niistä on omien MySQL-kyselyjen kirjoittaminen. Mutta tämä menetelmä ei ole keskivertobloggaajien käytettävissä, eikä se todennäköisesti ole parempi kuin hakulaajennus. Vaikka joskus itse tehtyä hakua käytetään esimerkiksi suodattimien ja muiden tehtävien luomiseen. Mutta tänään ei ole kyse niistä. Nyt näytän sinulle useita WordPressin hakulaajennuksia, jotka voivat etsiä kenttien mukaan.

Hae kenttien mukaan Relevanssista

Erinomainen laajennus, jonka avulla voit muun muassa tehdä hakuja WordPress-kenttien kautta. Koko asennusprosessi on hyvin yksinkertainen ja intuitiivinen.

Siellä on venäjän käyttöliittymäkieli ja paljon muuta.

Luodaksesi haun, määritä asetuksissa mitkä kentät tulee ottaa huomioon haussa. Voit määrittää kaikki, sulkea pois piilotetut tai kirjoittaa joukon kenttien nimiä pilkuilla erotettuina.

Mukautettujen kenttien hakemiseen WordPressissä tarvitset:


Tämän laajennuksen etuja ovat se, että hakuindeksi luodaan etukäteen, eli palvelimen kuormitus haun aikana on minimaalinen. Tämä on erittäin hyödyllistä, jos sinulla on suuri verkkosivusto tai paljon yksittäisiä käyttäjiä päivässä.

Hae mukautettujen kenttien mukaan Etsi kaikesta

Toinen liitännäinen lisäkenttien perusteella etsimiseen, jota haluan suositella, on Etsi kaikesta. Siinä on vähemmän asetuksia kuin edellisessä, mutta tämä ei estä sitä tekemästä hyvää hakua WordPress-kentissä.

Ottaaksesi haun käyttöön mukautettujen kenttien mukaan tarvitset:


Tämä laajennus on suunniteltu suodattamaan viestejä luokkien ja tunnisteiden mukaan. Laajennus voi suodattaa viestejä sekä pääsivulle että muille blogisi sivuille. Voit määrittää suodattimen mille tahansa sivulle, mutta se toimii vain, jos sivu sisältää koodia. Suodatin voidaan poistaa käytöstä tietyltä sivulta säilyttäen samalla kaikki asetukset.

Voit ladata laajennuksen täältä. No, nyt - yksityiskohdat.

Plugin suodattaa tallenteet kolmessa tilassa:

  1. Luokan mukaan;
  2. Tunnisteiden mukaan;
  3. Luokkien ja tunnisteiden mukaan.

Suodattimen useita ominaisuuksia:

  • jos merkintä on lähetetty vähintään yhteen suodatinasetuksissa määritettyyn kategoriaan, se näytetään;
  • jos tietue sisältää vähintään yhden suodatinasetuksissa määritetyn nimiön, se näytetään;
  • suodatus "luokkien ja tunnisteiden mukaan" toimii seuraavan säännön mukaan - tietue näytetään vain, jos se sisältää määritetyn tunnisteen JA sisältyy määritettyyn luokkaan.

Tietueiden lukumäärä sivua kohti voidaan määrittää erikseen kullekin sivulle. Oletusarvo on "Posts per page" Wordpressin asetuksista (Asetukset → Lukeminen).

Sivun koodi

Jotta laajennus suodattaa tietyn sivun viestejä, sille on asetettava erityinen koodi. Oletuksena tämä koodi näyttää tältä:

Tässä muodossa laajennus suodattaa tietueet asetustensa avulla. Tarkemmassa muodossa on mahdollista ohittaa määritetyt laajennusasetukset:

Yllä on esimerkki laajennetusta koodimerkinnästä, jossa on kaikki parametrit ja niiden oletusarvot. Kaikkia parametreja ei tarvitse määrittää. Parametrien määritelmä:

  • heading_tag - parametri viestin otsikkotunnisteen asettamiseen. Oletus - h2;
  • heading_class - parametri otsikkotyylin asettamiseen. Oletus - entry-title ;
  • content_tag - parametri viestiotteen tunnisteen määrittämiseen. Oletus - div ;
  • content_class - parametri viestiotteen tyylin asettamiseen. Oletus on entry-content;
  • per_page - parametri, jolla asetetaan tietueiden määrä sivulla. Oletuksena - arvo kohdasta Asetukset → Lukeminen tai 10.

Kommenttisi, arvostelusi jne. voit jättää sen tänne. Voit myös luoda keskustelun. Jos löydät vikoja tai sinulla on ehdotuksia laajennuksen parantamiseksi, voit käyttää virheenseurantatyökalua. Jos haluat lokalisoida laajennuksen omalle kielellesi, voit käyttää käännöspohjana tiedostoa wp-posts-filter.pot. Voit lukea lokalisointitiedoston luomisesta. Jos haluat, että lokalisaatiosi sisällytetään laajennusten jakeluun, ota minuun yhteyttä.