add_action( wordcamp_jkl, johdatus_filttereihin );

Samankaltaiset tiedostot
Wordpress-julkaisualusta. Mediatekniikan seminaari Harri Viitala

Mikä on WordPress? itse ylläpidettävä (self-hosted) WordPress.com: ilmainen 3. osapuolen ylläpitämä pilvipalvelu (Cloud-hosted)

Pedanet oppilaan ohje Aleksanteri Kenan koulu Eija Arvola

Ohjeet What matters to me palvelun käyttöönottoon

Tietosuoja-portaali. päivittäjän ohje

Suvi Junes Tietohallinto / Opetusteknologiapalvelut 2012

TAMPEREEN TEKNILLINEN YLIOPISTO Digitaali- ja tietokonetekniikan laitos. Harjoitustyö 4: Cache, osa 2

NETTISIVUOHJE. MUITA OHJEITA käyttäjän lisääminen, mediakirjasto, sähköpostien lisääminen

Prinetti lisäosa WooCommerce alustalle (c) Webbisivut.org

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

Ohjeistus yhdistysten internetpäivittäjille

Hittitoimiston Forte-kotisivujen päivitysohje

QR-koodi Vammaiskorttiin

WORDPRESS KOTISIVUT JA BLOGI

HTML & CSS. HTML (HyperText Markup Language) Antti Koivisto. ! HTML on sivujen kuvauskieli.

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Ohjelmoinnin jatkokurssi, kurssikoe

ITKP102 Ohjelmointi 1 (6 op)

Teeman luominen WordPress-julkaisualustalle

Joomla pikaopas. Yksinkertainen opas, jossa neuvotaan esimerkkisivuston teko Joomla julkaisujärjestelmällä vaihe vaiheelta.

Tentti erilaiset kysymystyypit

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Testausdokumentti. Sivu: 1 / 10. Ohjelmistotuotantoprojekti Sheeple Helsingin yliopisto. Versiohistoria

Pythonin Kertaus. Cse-a1130. Tietotekniikka Sovelluksissa. Versio 0.01b

SALITE.fi -Verkon pääkäyttäjän ohje


Miten siirrän omat työni Office 365:stä Peda.nettiin sekä jaan sen siellä muille Eija Arvola

1 Visma Econet Pro Arkistointi

Entiteetit erotetaan muusta tekstistä & ja puolipiste. esim. copyright-merkki näkyy sivulla

58131 Tietorakenteet ja algoritmit (syksy 2015)

Kopiodaksesi, leikataksesi ja liittääksesi helpointa on käyttää näppäimistön pikavalintoja:

TIEDOTTEEN JA VIESTINTÄSUUNNITELMAN TEKO

WEBINAARIN ISÄNNÄT. Jarno Wuorisalo Cuutio.fi. Petri Mertanen Superanalytics.fi. Tomi Grönfors Brandfors.com

IDL - datan sovitus. ATK tähtitieteessä. IDL - esimerkiksi linfit. IDL - esimerkiksi linfit

ATK tähtitieteessä. Osa 5 - IDL datan sovitusta ja muita ominaisuuksia. 25. syyskuuta 2014

Jotta tuotelaskutusta voidaan käyttää, tulee lippukunnan perustiedoissa olla tuotemyynnin tilitiedot ja sähköposti merkattuna.

Algoritmit 1. Luento 1 Ti Timo Männikkö

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

Sukupuu -ohjelma. Ossi Väre ( ) Joni Virtanen ( )

Tilastolliset ohjelmistot A. Pinja Pikkuhookana

Wordpress- ohje nettisivujen laadintaan

DL SOFTWARE Uumajankatu 2 Umeågatan FIN VAASA/VASA FINLAND +358-(0) Fax +358-(0)

Tapahtumakalenteri & Jäsentietojärjestelmä Ylläpito

Mari Myllykangas WORDPRESS-TEEMAN TOTEUTTAMINEN

ELM GROUP 04. Teemu Laakso Henrik Talarmo

ITKP102 Ohjelmointi 1 (6 op)

Westiekerho.fi päätoiminnallisuudet

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Tentti erilaiset kysymystyypit

Hellä ensikosketus. Tomi Kiviniemi

DXL Library ja DXL-kielen olemus. Pekka Mäkinen SoftQA Oy http/

Huawei E3276s ohjelmistopäivitys

Verkkojulkaiseminen Minna Väisänen. HTML5-tehtävä

ATK tähtitieteessä. Osa 5 - IDL datan sovitusta ja muita ominaisuuksia. 25. syyskuuta 2014

Ohjeistus maailman asiakasystävällisimpään myyntiin. Oskari Lammi

Ohjelmoinnin perusteet Y Python

Hittitoimiston Verkkokaupan päivitysohje

Luento 5. Timo Savola. 28. huhtikuuta 2006

Wordpress sivuston. julkaisun tarkistuslista. Kirjoittanut Kim Laine Helsini

BORIS-peruskurssi - Harjoitukset

Kypsyysnäytteen laatiminen ja arvioiminen Examissa

Mendeley-esittely. Turun yliopiston kirjasto Syksy 2016

Harjoitustyö 3: Verkkosivujen toiminnallisuus (JavaScript)

Wordpress. Bloggaamisen perusteet tekniset minimitoimet, joilla pääset alkuun

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

AJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML

Toinen harjoitustyö. ASCII-grafiikkaa

Automaattinen sisällönhaku WordPress-julkaisujärjestelmään

GOOGLE-SIVUSTOJEN KAÄ YTTOÄ OÄ NOTTO

BLOGGER. ohjeita blogin pitämiseen Googlen Bloggerilla

VIENET JULKAISUJÄRJESTELMÄLLÄ TOTEUTETTUJEN INTERNET-SIVUJEN YLLÄPITO-OHJE

Terveystasku- palveluun kirjautuminen

ITKP102 Ohjelmointi 1 (6 op)

Flash ActionScript osa 4

Opas Logitech Harmony 525 asennusohjelmistoon

PROJEKTISIVUJEN PAÄ IVITTAÄ MISEN OHJEET

Testaussuunnitelma PULSU. Syksy 2008 Ohjelmistotuotantoprojekti. HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

linux linux: käyttäjän oikeudet + lisää ja - poistaa oikeuksia

SoleMOVE lähtevän harjoittelijan ohje

Tiedostonhallinta. Yleistä

Google Sites: sivun muokkaaminen (esim. tekstin, kuvien, linkkien, tiedostojen, videoiden ym. lisääminen)

- Jalkapalloa jokaiselle -

2 Konekieli, aliohjelmat, keskeytykset

Skype for Business ohjelman asennus- ja käyttöohje Sisällys

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Juricon Nettisivu Joomlan käyttöohjeet

Web-sisällönhallintajärjestelmät. Sisältö. Mitä on web-sisällönhallinta?

Hakeminen perusopetuksen iltapäivätoimintaan Wilmassa

Windows Server 2012 asentaminen ja käyttöönotto, Serverin pyörittämisen takia tarvitaan

Kompassin käyttöönotto ja kokeen luominen Opettaja

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

YRITYSTILI KÄYTTÖOHJEET

WORDPRESS-LISÄOSAN KEHITYS

Helsingin Sanomat ipad

Ohjelmoinnin peruskurssi Y1

WEBINAARI Mitä Tag Management on käytännössä ja miten se vaikuttaa analytiikkaan?

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

ejuttu ohjeet kuinka sitä käytetään.

Transkriptio:

add_action( wordcamp_jkl, johdatus_filttereihin ); WordCamp JKL 9.2.2018 Mikko Saari Painava sana oy mikko@mikkosaari.fi @msaari

Mitä filterit ja actionit ovat? Filter ja action ovat melkein samoja asioita: molemmat ovat WordPressin toiminnan osaksi koukutettuja omia funktioita. Filter saa jonkun arvon, jota se tarkastelee tai muuttaa. Action on tilaisuus tehdä jotain osana prosessia. Kummatkin edellyttävät koukun, eli koodissa pitää olla filterille tai actionille varattu paikka.

Mitä hyötyä? Tapa muuttaa WordPressin tai pluginin toimintaa turvallisesti ja kestävästi. Suora muutos WordPressin tai pluginin tiedostoihin jyrätään seuraavassa päivityksessä. Ulkopuolelta filtterin tai actionin kautta tehty muutos kestää (yleensä) päivittämisen.

Esimerkkejä TablePress-pluginilla tehtävässä taulukossa otsikon pitäisi olla <h3>, mutta etusivulla <h2>. Ei onnistu asetuksista, mutta onnistuu näin:

Esimerkkejä Entäs jos taulukko on desktopilla hyvä, mutta mobiilipuolella pitäisi oikeastaan saada samasta datasta pyöräytettyä <div>-pohjainen ratkaisu? Pistetään filtterillä koko taulu uusiksi!

Esimerkkejä Entäs jos Relevanssin indeksiin halutaan kaikki artikkelit, paitsi post_typessä uutinen olevat artikkelit, jotka on kirjoittanut käyttäjä numero 3 ja jotka käsittelevät jalkapalloa?

Esimerkkejä Ärsyttääkö kun artikkelin muokkaussivulla avainkenttien listassa ei näy kaikkia avainkenttiä, jos niitä on liikaa?

Filtterien käyttäminen apply_filters( koukun_nimi, suodatettava arvo, parametrit) Parametrejä voi olla useita. add_filter( koukun_nimi, funktion_nimi, prioriteetti, parametrien lukumäärä) Prioriteetti määrittelee järjestyksen, jossa samaan koukkuun asetetut filtterit ajetaan. Toinen numero kertoo filtterin parametrien lukumäärän. Funktion pitää palauttaa lopuksi suodatettu arvo.

Actionien käyttäminen do_action( koukun_nimi, parametrit) Tässäkin voi olla useita parametrejä, mutta mitään niistä ei tarvitse eikä voi palauttaa. add_action( koukun_nimi, funktion_nimi, prioriteetti, parametrien lukumäärä) Samoin tässäkin prioriteetti ja parametrien määrä. Tämä on itse asiassa tismalleen sama funktio kuin add_filter(), ei ole väliä kumpaa käytät.

apply_filters_ref_array()? Tällaistakin muotoa näkee: $args = array( foo, bar, baz ); apply_filters_ref_array( koukku, $args); Tämä on sama kuin: apply_filters( koukku, foo, bar, baz ); Arrayn ensimmäinen elementti on suodatettava arvo, muut lisäparametrejä. Aikaisemmin parametri oli viittaus, nykyään (PHP 5.4+) ei yleensä enää ole. Actioneille on vastaava do_action_ref_array()

Minne oma koodi laitetaan? Tavallisin paikka on teeman functions.php-tiedosto, joka on olemassa tällaista varten. Jos käytät teemaa, jota päivitetään, päivitys jyrää muutokset, eli silloin oikea paikka on lapsiteeman functions.php. Jos muutos ei nimenomaisesti liity teemaan vaan saitin toiminnallisuuteen muuten, paras tapa on tehdä oma miniplugini koodimuutoksia varten: silloin teeman vaihtaminen ei riko kaikkea toiminnallisuutta.

Miniplugini <?php /* Plugin Name: Oma toiminnallisuus Description: Omat funktiot tänne! Version: 1 */ add_filter( the_content, sisältösuodatin ); function sisältösuodatin($sisältö) { return $sisältö; }

Koukut teemoissa Koukut eivät ole vain WordPressin ja lisäosien juttu, niitä voi käyttää myös teemoissa. Teeman rakentamisessa tarvitaan paljon koukkuja, joihin teeman ominaisuuksia liitetään. Genesis ja Thesis tunnettuja esimerkkejä koukkuihin perustuvista teemoista: muutoksia ei tehdä suoraan sivupohjiin, vaan koukuilla. Hyvä idea teoriassa, käytännössä ei toimi ihan yhtä hyvin: teemaa voi silloin muokata vain sen verran kuin koukut antavat periksi.

Koukkujen tarkastelua has_filter( koukun_nimi, funktion_nimi ) Kertoo, onko tietty funktio tietyssä koukussa. Vastaavasti has_action(). current_filter() Kertoo, minkä filtterikoukun suoritus on menossa. did_action( koukku ) Kertoo kuinka monta kertaa koukku on suoritettu. Sama koukku voi laueta monta kertaa, joten jos halutaan varmistaa, että joku asia tehdään vain ensimmäisellä kerralla, tällä voi varmistaa sen.

Yleistyökalu global $wp_filter; Sisältää kaikki rekisteröidyt filtterit ja actionit. var_dump($wp_filter[ koukun_nimi ]); Näyttää kaikki koukkuun rekisteröidyt funktiot.

Funktioiden poistamista remove_action( koukku, funktio, prioriteetti) ja remove_filter( koukku, funktio, prioriteetti) Poistaa filtterin tai actionin, prioriteettiä myöden pitää olla yksityiskohdat samat kuin asetettaessa. remove_all_filters( koukku, prioriteetti) ja remove_all_actions( koukku, prioriteetti) Pyyhkäisee kaikki annetun prioriteetin funktiot koukusta. Jos prioriteettia ei käytä, poistetaan kaikki.

Varo ikuista silmukkaa Actioneiden kohdalla pitää joissain tapauksissa varoa ikuiseen silmukkaan joutumista. Jos actionin sisältä kutsuu funktiota, joka ajaa saman actionin, silmukka on valmis! Esimerkki: koukussa save_post tekee muutoksia artikkeliin ja tallentaa ne wp_update_post() -funktiolla, joka suorittaa lopuksi save_post-koukun. remove_action('save_post', oma_funktio' ); wp_update_post($parametrit); add_action('save_post', oma_funktio );

Miten koukut löytyvät? Katso Codexista ( Filter Reference, Action Reference ). Pluginien kohdalla pitää sukeltaa lähdekoodiin, jos kehittäjä ei ole ystävällisesti dokumentoinut filttereitään. Jos pluginissa ei ole valmiiksi sopivaa koukkua, pyydä kehittäjää lisäämään se! Tämä on yleensä helppo juttu.

Action reference -sivun kiinnostavinta antia on lista tavanomaisen sivunlatauksen aikana ajettavista actioneista. Lista on pitkä ja siinä on monta hyödyllistä actionia, joihin tarttua. Jotkut jutut on tehtävä tietyssä vaiheessa prosessia, jotta ne toimivat oikein.

Koukkuja on PALJON WP 2.0: 261 kpl WP 3.0: 1259 kpl WP 4.0: 1680 kpl WP 4.9.2: 2709 kpl

Hyödyllisiä koukkuja pre_option_(asetuksen nimi) Jokaiselle get_option()-funktiolla luettavalle asetukselle on filtteri, jonka läpi asetus menee. Tällä voit muuttaa asetusta lennossa. wp_head, wp_footer the_content, the_excerpt, the_title

Hyödyllisiä koukkuja post_class, body_class Lisää CSS-luokkia artikkelin elementille tai dokumentin <body>tagille. pre_get_posts Tapahtuu ennen kuin sivulla näytettävät artikkelit ladataan. Mahdollistaa esimerkiksi arkistosivulla näytettävien artikkelien säätämisen.

Hyödyllisiä koukkuja wp_enqueue_scripts Oikea tapa lisätä Javascriptit ja ulkoiset CSS-tyylit sivuille on käyttää tätä koukkua ja wp_enqueue_scripts()-funktiota. Silloin esimerkiksi erilaiset optimointilisäosat pystyvät optimoimaan Javascriptit.

Mitä tästä opittiin? Suurta osaa WordPressin toiminnasta on mahdollista muuttaa filttereillä tai actioneilla. Älä koske WordPressiin tai plugineihin, tee muutokset filttereillä tai actioneilla. Jos teet itse pluginia, mieti: haluaako joku muuttaa tätä arvoa tai toimintoa? Jos vastaus on edes ehkä, vedä se filtterin läpi. Jos pluginissa ei ole tarvitsemaasi filtteriä, pyydä kehittäjää lisäämään sellainen!