{"id":233741,"date":"2023-02-21T15:29:00","date_gmt":"2023-02-21T12:29:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=233741"},"modified":"2023-02-21T15:41:01","modified_gmt":"2023-02-21T12:41:01","slug":"viestien-animoidun-suodatuksen-toteuttaminen-kategorioiden-mukaan","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/fi\/viestien-animoidun-suodatuksen-toteuttaminen-kategorioiden-mukaan\/","title":{"rendered":"Viestien animoidun suodatuksen toteuttaminen kategorioiden mukaan"},"content":{"rendered":"\n<p>Oletko koskaan halunnut tehd\u00e4 mukavan sarakeesityksen viesteist\u00e4, joiden yl\u00e4puolella on luokkasuodattimet, jotka sekoittavat ja suodattavat viestit mukavalla animaatiolla? Sitten t\u00e4m\u00e4 on opetusohjelma sinulle.<\/p>\n<p>T\u00e4ss\u00e4 opetusohjelmassa teemme luettelon kaikista viesteist\u00e4 (mieluiten mukautetussa viestityypiss\u00e4, kuten ty\u00f6ntekij\u00e4t) kauniisti sarakkeissa ja niiden esittelykuvien kanssa. Viestien yl\u00e4puolella luomme suodattimia yhdistetylle taksonomialle. Kun napsautat suodatinta, viestit sekoitetaan mukavalla animaatiolla ja piilotetaan viestit, joita ei ole valitussa kategoriassa.<\/p>\n<\/p>\n<p>T\u00e4t\u00e4 varten k\u00e4yt\u00e4mme suodatukseen Javascript-kirjastoa. Saatavilla on monia &#8211; jotkut vaativat jQueryn ja jotkut eiv\u00e4t &#8211; jotkut ovat avoimen l\u00e4hdekoodin ja jotkut vaativat kaupallisen lisenssin. Suosituimmat ovat <a href=\"https:\/\/www.kunkalabs.com\/mixitup\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">MixItUp<\/a> ja <a href=\"https:\/\/isotope.metafizzy.co\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Isotope<\/a>. Molemmat vaativat kuitenkin kaupallisen lisenssin. Tarvitsin projektiani varten kirjaston, joka tekee tempun ja on t\u00e4ysin ilmainen k\u00e4ytett\u00e4v\u00e4ksi kaupallisissa projekteissa. Olen kokeillut useita ja paras t\u00e4h\u00e4n menness\u00e4 l\u00f6yt\u00e4m\u00e4ni on <a href=\"https:\/\/yiotis.net\/filterizr\/#\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">FilterizR<\/a>. Aloitetaan t\u00e4m\u00e4 opetusohjelma tutustumalla t\u00e4h\u00e4n kirjastoon!<\/p>\n<h2>FilterizR-kirjasto<\/h2>\n<p>Katso esittely <a href=\"https:\/\/yiotis.net\/filterizr\/#\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">FilterizR:n kotisivulta<\/a> n\u00e4hd\u00e4ksesi, onko t\u00e4m\u00e4 kirjasto sinua varten. Voit jopa pelata vaihtoehdoilla reaaliajassa. T\u00e4m\u00e4 kirjasto tukee suodatusta (jota teemme t\u00e4ss\u00e4 opetusohjelmassa), sekoitusta (satunnaistamista), hakua ja lajittelua. Se on responsiivinen ja optimoitu mobiililaitteille. Toistaiseksi siit\u00e4, mit\u00e4 olen kokenut, se onnistuu my\u00f6s m\u00e4\u00e4ritt\u00e4m\u00e4\u00e4n automaattisen korkeuden jokaiselle esineelle eritt\u00e4in hyvin.<\/p>\n<p>FilterizR tarjoaa kolme erilaista k\u00e4ytt\u00f6tapaa:<\/p>\n<ul>\n<li>Vanilla Javascript: paljastaa FilterizR:n globaalina funktiona, joka kutsuu vakio Javascriptin.<\/li>\n<li>jQuery: Voit k\u00e4ytt\u00e4\u00e4 <code>jQuery<\/code>sen alustamiseen ja m\u00e4\u00e4ritt\u00e4miseen.<\/li>\n<li>Puhdas Javascript-kirjasto\/npm: K\u00e4ytet\u00e4\u00e4n ES6-tuonnissa (esim. jos kirjoitat mukautettuja lohkoja Gutenbergille).<\/li>\n<\/ul>\n<p>Toinen vaihtoehto on helpoin ihmisille, jotka eiv\u00e4t tunne Javascriptia. Useimmat ihmiset aloittavat jQueryll\u00e4. Mutta muista, ett\u00e4 jQuery on suuri ja raskas kirjasto ladattavaksi projektiisi, ja jos se voidaan v\u00e4ltt\u00e4\u00e4, sinun pit\u00e4isi. T\u00e4ss\u00e4 opetusohjelmassa k\u00e4yt\u00e4mme vanilja Javascript -menetelm\u00e4\u00e4. Jos otat t\u00e4m\u00e4n k\u00e4ytt\u00f6\u00f6n mukautetussa Gutenberg-lohkossa, sinun tulee harkita kolmannen vaihtoehdon k\u00e4ytt\u00f6\u00e4. Sitten voit yksinkertaisesti asentaa sen kautta <code>npm<\/code>ja tuoda kirjaston lohkokoodissasi.<\/p>\n<h2>Tiedostojen lataaminen ja asettaminen<\/h2>\n<p>Haetaan sopiva tiedosto! Lataa FilterizR <a href=\"https:\/\/github.com\/giotiskl\/filterizr\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">:n Githubista<\/a>. Jos et asenna npm:n kautta (kolmas vaihtoehto), voit siirty\u00e4 kansioon &#8217; <code>dist<\/code>&#8217; ja ladata tarvitsemasi pienennetyn kirjaston. Koska k\u00e4yt\u00e4n sit\u00e4 vanilja Javascriptin kanssa t\u00e4ss\u00e4 opetusohjelmassa, lataan <code>vanilla.filterizr.min.js<\/code>tiedoston ja sijoitan sen <code>theme-folder\/assets\/js\/<\/code>kansioon. Kirjaston sijoituspaikka on tietysti t\u00e4ysin sinun p\u00e4\u00e4tett\u00e4viss\u00e4si, s\u00e4\u00e4d\u00e4 vain polkua alemmas.<\/p>\n<p>Tarvitsemme my\u00f6s toisen Javascript-tiedoston alustaaksemme ja p\u00e4\u00e4tt\u00e4\u00e4ksemme vaihtoehdoista. Luon tiedoston <code>theme-folder\/assets\/js\/filtering-main.js<\/code>. Palaamme t\u00e4h\u00e4n tiedostoon my\u00f6hemmin. T\u00e4m\u00e4 ei tietenk\u00e4\u00e4n ole v\u00e4ltt\u00e4m\u00e4t\u00f6nt\u00e4, jos toteutat t\u00e4m\u00e4n mukautetussa Gutenberg-lohkossa.<\/p>\n<p>Jotta WordPress sis\u00e4llytt\u00e4isi skriptit, meid\u00e4n on asetettava molemmat skriptit jonoon <code>wp_enqueue_scripts<\/code>. T\u00e4m\u00e4 voidaan lis\u00e4t\u00e4 johonkin teemaasi <code>functions.php<\/code>. Niin kuin:<\/p>\n<pre><code>add_action('wp_enqueue_scripts', function() {\n    wp_enqueue_script('filterizr', get_template_directory_uri(). '\/assets\/js\/vanilla.filterizr.min.js', [], false, true);\n    wp_enqueue_script('filtering-script', get_template_directory_uri(). '\/assets\/js\/filtering-main.js', ['filterizr'], false, true);\n});<\/code><\/pre>\n<p>S\u00e4\u00e4d\u00e4 tiedostonimet ja\/tai polut sopivaksi projektiisi\/teemaasi. Yll\u00e4 oleva koodi asettaa jonoon vanilla filterizR-skriptin ja toiseksi <code>filtering-main.js<\/code>skriptin, joka on riippuvainen filterizR-skriptist\u00e4. T\u00e4m\u00e4 varmistaa, ett\u00e4 alustusskripti ladataan tarvittavan kirjaston j\u00e4lkeen.<\/p>\n<h2>Mallin render\u00f6iminen<\/h2>\n<p>Seuraava askel on paikka, johon haluamme n\u00e4ytt\u00e4\u00e4 t\u00e4m\u00e4n luettelon. T\u00e4m\u00e4 on t\u00e4ysin sinun p\u00e4\u00e4tett\u00e4viss\u00e4si. Jotta se olisi yksinkertainen t\u00e4ss\u00e4 opetusohjelmassa, k\u00e4yt\u00e4n teemassani sivumallia. Jos toteutat t\u00e4m\u00e4n Gutenberg-lohkossa, voit tehd\u00e4 sen joko PHP:ll\u00e4 (dynaamisille lohkoille) tai Javascriptill\u00e4 lohkon <code>save<\/code>menetelm\u00e4ss\u00e4. T\u00e4rke\u00e4\u00e4 on tehd\u00e4 viestej\u00e4 ja suodattimia ymp\u00e4r\u00f6iv\u00e4 HTML-koodi oikein.<\/p>\n<h3>Suodattimien render\u00f6iminen<\/h3>\n<p>Luon teemakansioon sivumallin <code>template-filters.php<\/code>ja lis\u00e4\u00e4n PHP-koodini tulosteen tuottamiseksi sinne.<\/p>\n<p>T\u00e4ss\u00e4 opetusohjelmassa oletetaan, ett\u00e4 haluamme hahmontaa viestit mukautetussa viestityypiss\u00e4. Voit tehd\u00e4 t\u00e4m\u00e4n tavallisilla postauksilla ja luokilla, mutta viestej\u00e4 tulee yleens\u00e4 melko paljon \u2013 mit\u00e4 ei ole mahdollista k\u00e4ytt\u00e4\u00e4 t\u00e4llaiseen n\u00e4ytt\u00f6\u00f6n. Oletetaan esimerkiksi mukautettu postityyppi ty\u00f6ntekij\u00f6ille, joilla on yhdistetty mukautettu taksonomia osastolle. En n\u00e4yt\u00e4 t\u00e4ss\u00e4 opetusohjelmassa, kuinka mukautettua viestityyppi\u00e4 lis\u00e4t\u00e4\u00e4n. Muista vain, ett\u00e4 viestityypin nimi on <code>employees<\/code>ja mukautetun taksonomian nimi on <code>department<\/code>. Vaihda viestityyppisi ja taksonomiasi nimet. Jos olet ep\u00e4varma mukautetun viestityypin lis\u00e4\u00e4misest\u00e4, minulla on <a href=\"https:\/\/wordpress.mediadoma.com\/fi\/luo-mukautettuja-viestityyppejae-ja-mukautettuja-taksonomioita-wordpressissae-koodin-mukaan\/\" title=\"opetusopas, jossa k\u00e4sitell\u00e4\u00e4n mukautettujen viestityyppien ja taksonomioiden luomista\">opetusopas, jossa k\u00e4sitell\u00e4\u00e4n mukautettujen viestityyppien ja taksonomioiden luomista<\/a>.<\/p>\n<p>Mallissani aloitan luomalla suodattimet. Haen kaikki mukautetun taksonomian ei-tyhj\u00e4t termit k\u00e4ytt\u00e4m\u00e4ll\u00e4 <code>[get_terms](https:\/\/developer.wordpress.org\/reference\/functions\/get_terms\/)()<\/code>ja lis\u00e4\u00e4n ne j\u00e4rjest\u00e4m\u00e4tt\u00f6m\u00e4\u00e4n luetteloon.<\/p>\n<pre><code>&lt;?php\n$departments = get_terms([\n    'taxonomy' =&gt; 'department'\n]);\n?&gt;&lt;ul class=\"filter-controls\"&gt;\n    &lt;li data-filter=\"all\"&gt;&lt;?php _e('All', 'txtdomain'); ?&gt;&lt;\/li&gt;&lt;?php\n    foreach ($departments as $department) {\n        ?&gt;&lt;li data-filter=\"&lt;?php echo $department-&gt;slug; ?&gt;\"&gt;&lt;?php echo $department-&gt;name; ?&gt;&lt;\/li&gt;&lt;?php\n    }\n?&gt;&lt;\/ul&gt;\n\u00a0<\/code><\/pre>\n<p>Ennen kuin luon elementit jokaiselle taksonomian termille, varmistan, ett\u00e4 teen yhden elementin &quot;Kaikille&quot; (rivi <code>#6<\/code>). Jotta FilterizR-suodatus toimisi, meid\u00e4n on annettava <code>data-filter<\/code>jokaiselle suodatinelementille data-attribuutti &quot; &quot;. Sis\u00e4ll\u00f6n tulee merkitsev\u00e4t yksil\u00f6llisesti ainutlaatuista suodatusarvoa, t\u00e4ss\u00e4 tapauksessa termin slug (voit k\u00e4ytt\u00e4\u00e4 termi\u00e4 ID tai jotain muuta, jos haluat). T\u00e4m\u00e4 tarkoittaa, ett\u00e4 minun on lis\u00e4tt\u00e4v\u00e4 my\u00f6s termin slugs data-attribuutteina viesteihin (katso my\u00f6hemmin), joten FilterizR voi tiet\u00e4\u00e4, mitk\u00e4 viestit kuuluvat mihinkin suodattimeen.<\/p>\n<p>Yll\u00e4 olevalla koodilla sinun pit\u00e4isi saada luettelo, jossa on &quot;Kaikki&quot; ja kaikki ei-tyhj\u00e4t termit. Loistava!<\/p>\n<p>Nyt, juuri t\u00e4m\u00e4n alapuolella, alan hahmontaa viestej\u00e4.<\/p>\n<h3>Viestien render\u00f6iminen<\/h3>\n<p>Kun kirjoitat viestej\u00e4, sinun on muistettava kaksi asiaa. Yksi on k\u00e4\u00e4ri\u00e4 kaikki viestit s\u00e4il\u00f6\u00f6n, jolle annan luokan nimen <code>filter-container<\/code>. T\u00e4m\u00e4 luokka on se, mihin meid\u00e4n on kohdistettava Javascriptill\u00e4, jotta FilterizR toimisi. Ja toiseksi jokaisessa kohteessa on oltava data-attribuutti &quot; <code>data-category<\/code>&quot;, joka luettelee kaikki termit pilkuilla erotettuina. <code>data-filter<\/code>T\u00e4ss\u00e4 olevien arvojen on vastattava suodattimien attribuutissa luotuja arvoja .<\/p>\n<p>Kyselen kaikkia viestej\u00e4 mukautetusta viestityypist\u00e4 <code>[WP_Query](https:\/\/developer.wordpress.org\/reference\/classes\/wp_query\/)<\/code>ja selailen viestej\u00e4. Se, mit\u00e4 n\u00e4yt\u00e4t julkaisua kohti, on t\u00e4ysin sinun p\u00e4\u00e4tett\u00e4viss\u00e4si, mutta alla oleva esimerkki n\u00e4ytt\u00e4\u00e4 esitellyn kuvan, viestin otsikon ja yhden mukautetun viestin metan ty\u00f6nimikkeelle. Kaikki k\u00e4\u00e4ritty sis\u00e4linkkeihin, jotka menev\u00e4t yhdelle ty\u00f6ntekij\u00e4lle.<\/p>\n<pre><code>&lt;?php\n$employees = new WP_Query([\n    'post_type' =&gt; 'employees',\n    'posts_per_page' =&gt; -1,\n    'orderby' =&gt; 'name',\n    'order' =&gt; 'ASC'\n]);\nif ($employees-&gt;have_posts()) {\n    ?&gt;&lt;div class=\"filter-container\"&gt;&lt;?php\n    while ($employees-&gt;have_posts()) {\n        $employees-&gt;the_post();\n\u00a0\n        $dep = wp_get_object_terms(get_the_ID(), 'department', ['fields' =&gt; 'slugs']);\n        ?&gt;&lt;div class=\"filtr-item\" data-category=\"&lt;?php echo implode(',', $dep); ?&gt;\"&gt;\n            &lt;a href=\"&lt;?php the_permalink(); ?&gt;\" title=\"&lt;?php the_title(); ?&gt;\"&gt;&lt;?php\n        if (has_post_thumbnail()) {\n            the_post_thumbnail('employees-thumb');\n        }\n\u00a0\n        $job_title = get_post_meta(get_the_ID(), 'job_title', true);\n        ?&gt;&lt;div class=\"employee-info\"&gt;\n            &lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;\/h2&gt;\n            &lt;span class=\"job-title\"&gt;&lt;?php echo $job_title; ?&gt;&lt;\/span&gt;\n        &lt;\/div&gt;&lt;?php\n\u00a0\n\u00a0\n        ?&gt;&lt;\/a&gt;&lt;\/div&gt;&lt;?php\n    }\n    wp_reset_postdata();\n    ?&gt;&lt;\/div&gt;&lt;?php\n}\n?&gt;<\/code><\/pre>\n<p>Rivill\u00e4 oleva kysely <code>#2-7<\/code>varmistaa, ett\u00e4 haen kaikki viestityyppisten ty\u00f6ntekij\u00f6iden julkaistut viestit aakkosj\u00e4rjestyksess\u00e4. Ennen kuin teen <code>div<\/code>rivin jokaiselle viestille rivill\u00e4 <code>#13<\/code>, <code>[wp_get_object_terms](https:\/\/developer.wordpress.org\/reference\/functions\/wp_get_object_terms\/)()<\/code>haen kaikki t\u00e4lle viestille m\u00e4\u00e4ritetyt termit. Parametriksi pyyd\u00e4n vain termien etanoita. Palautus on joukko mit\u00e4 tahansa osoitettuja termej\u00e4 etanoita. Luon sitten PHP-funktiolla <code>[implode](https:\/\/www.php.net\/manual\/en\/function.implode.php)()<\/code>merkkijonon kaikista taulukon elementeist\u00e4 pilkulla erotettuina. T\u00e4m\u00e4 toistetaan <code>data-category<\/code>juurille vaadittavana attribuuttina <code>div<\/code>\u2013 mik\u00e4 saa suodattimet toimimaan.<\/p>\n<p>Mit\u00e4 tulee kunkin postauksen sis\u00e4lt\u00f6\u00f6n, tulos on melko vakio. Luomme julkaisun esittelykuvan k\u00e4ytt\u00e4m\u00e4ll\u00e4 mukautettua kuvakokoa (&#8217; <code>employees-thumb<\/code>&#8217;), julkaisun otsikkoa ja yksitt\u00e4isen mukautetun viestin meta-arvoa (ty\u00f6nimikkeelle). Kaikki on k\u00e4\u00e4ritty linkin sis\u00e4\u00e4n, joka johtaa kyseisen ty\u00f6ntekij\u00e4n yhteen n\u00e4kym\u00e4\u00e4n. Lis\u00e4sin my\u00f6s joitain luokkia ja k\u00e4\u00e4reit\u00e4 helpottaakseni kohdistamista CSS:ll\u00e4. Jokaisen elementin tulos on tietysti t\u00e4ysin sinun p\u00e4\u00e4tett\u00e4viss\u00e4si.<\/p>\n<p>T\u00e4ss\u00e4 vaiheessa PHP-renderoinnin pit\u00e4isi olla valmis. Olet tervetullut muotoilemaan ja n\u00e4ytt\u00e4m\u00e4\u00e4n kauniilta, mutta \u00e4l\u00e4 vaivaudu muotoilemaan sarakkeita. FilterizR luo sarakkeita (flexbox) puolestasi. Seuraava vaihe on itse asiassa suodatusohjelman alustaminen!<\/p>\n<h2>Suodatinkomentosarjaa alustetaan<\/h2>\n<p>Viimeinen osa on <code>filtering-main.js<\/code>k\u00e4sikirjoituksen muokkaaminen. Meid\u00e4n t\u00e4ytyy vain k\u00e4ske\u00e4 FilterizR:\u00e4\u00e4 k\u00e4ynnist\u00e4m\u00e4\u00e4n renderoidun sis\u00e4ll\u00f6n suodatus. T\u00e4ss\u00e4 on kuitenkin muutama asia, joka on pidett\u00e4v\u00e4 mieless\u00e4:<\/p>\n<p>FilterizR varmistaa, ett\u00e4 kaikkien pylv\u00e4iden k\u00e4\u00e4res\u00e4ili\u00f6 on automaattisesti mitoitettu n\u00e4kym\u00e4\u00e4n sopivaksi. Jos esimerkiksi aktiivinen suodatin n\u00e4ytt\u00e4\u00e4 viestit yhdell\u00e4 rivill\u00e4 ja napsautamme toista suodatinta, jossa on nelj\u00e4 rivi\u00e4, s\u00e4il\u00f6 skaalautuu automaattisesti oikealle korkeudelle. N\u00e4in varmistat, ett\u00e4 sen j\u00e4lkeen tuleva sis\u00e4lt\u00f6 ei j\u00e4\u00e4 piiloon. Mutta jotta t\u00e4m\u00e4 automaattinen koon muuttaminen toimisi, kaikkien kuvien on oltava ladattu ensin. Joissakin tapauksissa komentosarja voidaan ladata ja suorittaa ennen kuin jokainen kuva on latautunut, ja t\u00e4m\u00e4 saa s\u00e4il\u00f6n kutistumaan automaattisesti 0:n korkeuteen. T\u00e4m\u00e4 ei ole hyv\u00e4. Joten meid\u00e4n on asetettava alustuskoodi funktioon, jossa tied\u00e4mme, ett\u00e4 kuvat on latautunut. Vanilla Javascriptille t\u00e4m\u00e4 on <code>window.onload<\/code>. jQuerylle k\u00e4ytt\u00e4isit <code>$(window).load()<\/code>.<\/p>\n<p>Toiseksi haluamme varmistaa, ett\u00e4 skriptimme alustaa FilterizR:n vain, jos siell\u00e4 todellakin on suodatettava s\u00e4ili\u00f6. Jos alustamme FilterizR:n ja nykyisell\u00e4 sivulla ei ole tarvittavaa k\u00e4\u00e4reluokkaa, seurauksena on Javascript-virhe. Voimme ratkaista t\u00e4m\u00e4n tarkistamalla, onko konttiluokka ensin olemassa. Vanilla Javascriptiss\u00e4 voit k\u00e4ytt\u00e4\u00e4 <code>document.getElementById()<\/code>tai <code>document.getElementsByClassName()<\/code>. Katso esimerkki alla. Jos k\u00e4yt\u00e4t jQuery\u00e4 <code>jQuery('&lt;selector&gt;').length<\/code>, tarkistat t\u00e4m\u00e4n.<\/p>\n<p>Tapa alustaa FilterizR vanilla Javascriptill\u00e4 on luoda uusi esiintym\u00e4 <code>Filterizr<\/code>, jossa s\u00e4il\u00f6n valitsin on ensimm\u00e4inen parametri ja vaihtoehtoisesti asetusobjekti toiseksi parametriksi. T\u00e4m\u00e4 on esimerkki alkeellisimmista:<\/p>\n<pre><code>window.onload = function() {\n    var filterContainer = document.getElementsByClassName('filter-container');\n    if (filterContainer.length &gt; 0) {\n        filterizr = new Filterizr('.filter-container');\n    }\n\u00a0\n}<\/code><\/pre>\n<p>Alustus tapahtuu rivill\u00e4 <code>#4<\/code>. Annamme luokan nimen s\u00e4il\u00f6lle, joka kiertyy viestiemme ymp\u00e4rille pisteell\u00e4 edess\u00e4, mik\u00e4 tarkoittaa luokan valitsinta. Yll\u00e4 olevalla koodilla FilterizR:n pit\u00e4isi nyt ottaa viestisi haltuunsa ja sijoittaa ne sarakkeisiin. Koska k\u00e4ytimme asianmukaisia \u200b\u200bdata-attribuutteja, suodattimien pit\u00e4isi toimia my\u00f6s automaattisesti!<\/p>\n<h3>FilterizR:n asetusten mukauttaminen<\/h3>\n<p>Minulla on vain muutama viimeinen vinkki FilterizR:n optimoimiseksi, jonka voimme tehd\u00e4 antamalla asetusobjektin. Suosittelen katsomaan FilterizR:n <a href=\"https:\/\/yiotis.net\/filterizr\/#\/documentation\/vanilla\/options\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">mahdollisia vaihtoehtoja<\/a> n\u00e4hd\u00e4ksesi, mit\u00e4 voit tehd\u00e4. Voit hallita animaation nopeutta, animaatiotyyppi\u00e4 ja paljon muuta!<\/p>\n<p>Jotta sarakkeet toimisivat optimaalisesti responsiivisissa koossa, olen huomannut, ett\u00e4 <code>layout<\/code>FilterizR <code>sameWidth<\/code>toimii paremmin erikorkuisten viestien kanssa. T\u00e4m\u00e4 johtaa &quot;muuraus&quot; -tyyliin. Esimerkiss\u00e4mme toistamme lis\u00e4sis\u00e4lt\u00f6\u00e4 kuvan j\u00e4lkeen, mik\u00e4 voi johtaa vaihteleviin korkeuksiin (nimet voivat olla pidempi\u00e4, jolloin se pakotetaan useille riveille). T\u00e4st\u00e4 voi seurata outoa k\u00e4yt\u00f6st\u00e4.<\/p>\n<p>Oletusarvoisesti yksik\u00e4\u00e4n kohde ei saa v\u00e4li\u00e4. Jos haluat jonkin kohteen v\u00e4liin, voit m\u00e4\u00e4ritt\u00e4\u00e4 aukon koon px:lle <code>gutterPixels<\/code>. Yll\u00e4 olevassa esimerkiss\u00e4 olen k\u00e4ytt\u00e4nyt v\u00e4likokona 10 pikseli\u00e4. PS: Raon koko lis\u00e4t\u00e4\u00e4n my\u00f6s k\u00e4\u00e4res\u00e4ili\u00f6\u00f6n. T\u00e4m\u00e4 ei v\u00e4ltt\u00e4m\u00e4tt\u00e4 aina ole sit\u00e4, mit\u00e4 haluat. T\u00e4m\u00e4n ohittamiseksi olen vain lis\u00e4nnyt <code>padding: 0!important<\/code>tyylin <code>.filter-container<\/code>.<\/p>\n<p>T\u00e4ss\u00e4 on muokattu koodi FilterizR:n alustamiseksi vaihtoehdoillani:<\/p>\n<pre><code>window.onload = function() {\n    var filterContainer = document.getElementsByClassName('filter-container');\n    if (filterContainer.length &gt; 0) {\n        var options = {\n            layout: 'sameWidth',\n            gutterPixels: 10,\n        }\n        filterizr = new Filterizr('.filter-container', options);\n    }\n\u00a0\n}<\/code><\/pre>\n<p>Pienell\u00e4 tyylill\u00e4 lopputulos on jotain t\u00e4m\u00e4n kaltaista:<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152296-61e4d54c4aa2b.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-152296-61e4d54c4aa2b.png\" alt=\"Viestien animoidun suodatuksen toteuttaminen kategorioiden mukaan\"><\/a><\/p>\n<p>Muista, ett\u00e4 suodatus on vain yksi asia, jonka FilterizR voi tehd\u00e4! Tutustu esimerkkeihin heid\u00e4n <a href=\"https:\/\/yiotis.net\/filterizr\/#\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">kotisivunsa<\/a> &#8217;Opetusohjelmat&#8217; -kohdasta. Voit lis\u00e4t\u00e4 ohjaimia lajitteluun, satunnaistoistoon ja\/tai hakuun. Ja sinulla on my\u00f6s enemm\u00e4n vaihtoehtoja asettelun ohjaamiseen.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/awhitepixel.com\" class=\"external external_icon\">awhitepixel.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oletko koskaan halunnut tehd\u00e4 mukavan sarakeesityksen viesteist\u00e4 yl\u00e4kategorian suodattimilla, jotka suodattavat viestit mukavalla animaatiolla? \u00c4l\u00e4 sitten katso en\u00e4\u00e4!<\/p>\n","protected":false},"author":1,"featured_media":152297,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[927,895,719,719,895,917,917,1110,843,927,843,864,864],"tags":[1166],"class_list":{"0":"post-233741","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","6":"hentry","7":"category-aiheita","8":"category-koodi","9":"category-kehittaejae","12":"category-muut","14":"category-n-a","15":"category-opetusohjelmia","18":"category-wordpress-5","20":"tag-affiai-fi"},"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233741","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/comments?post=233741"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/posts\/233741\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media\/152297"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/media?parent=233741"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/categories?post=233741"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/fi\/wp-json\/wp\/v2\/tags?post=233741"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}