WordPressis on kahte sorti haakimiskohti:
- hook e. konks on nagu nagi, kuhu igaüks saab riputada oma täitmist vajavad funktsioonid;
- filter võimaldab huvilistel andmeid mudida, reeglina enne väljastamist.
Konksudest ja filtritest räägib kolmapäeval, 09.10.2019 kell 19 algaval WordPressi meetupil ka ArÅ«nas Liuiza.
Tule kohale kuulama ja küsima!
Konks
Selle illustreerimiseks sobib alamteemade postituses olev näide, kus lisasin Google Analytics’i header.php
koodi:
Kuna header.php
sai kopeeritud alamteema kataloogi tuleb sellise laiendamise puhul arvestada, et kui põhiteemas see fail uueneb on vaja neid a) märgata b) käsitsi alamteemasse üle tuua.
Jätkusuutlikum lahendus on päise konks:
<?php wp_head(); ?>
See teeb täpselt ühte asja – kutsub välja kõik ennast wp_head
konksu külge haakinud funktsioonid:
function wp_head() { /** * Prints scripts or data in the head tag on the front end. * * @since 1.5.0 */ do_action( 'wp_head' ); }
Praktikas haagivad ennast sinna kõik skriptid-CSSid-metaväljad jne (seejuures mõned nt JS ja CSS kasutades spetsiaalseid konkse, mis ennast wp_head
külge haagivad).
Sama analüütika-koodi saaksime lisada alamteema functions.php
faili nii:
function petskratt_analytics() { ?> <!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=UA-xxxxxx-1"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'UA-xxxxxx-1'); </script> <?php } add_action('wp_head', 'petskratt_analytics', 1);
Kirjeldan funktsiooni ning haagin ta nime pidi add_action
abil sobilikku kohta, viimane parameeter on prioriteet ehk vastavalt Google Analytics’i soovitusele tahaks nende jupp olla võimalikult <head>
alguses. Päris esimeseks ei saa, aga need eelnevad meta-väljad ei ole ka kuidagi probleemiks.a
Nüüd võin ka Twenty Nineteen’i julgesti uuendada, minu alamteema muudab põhiteema ja WordPressi käitumist vastavalt parimale tavale.
Selliseid konkse on WordPressis umbes 800 – ja lisaks 1700 filtrit.
Filter
Konks on abiks, kui tahad ise midagi väljastada – aga mida teha juhul, kui tahaksid muuta mõne teise funktsiooni poolt väljastatavat? Näiteks prooviks postituse sisu kuvada AINULT SUURTÄHTEDEGA … või veel parem (jaburam) SuvaLIsE SuuRUsEGA.
Tegevuste ahel on selline:
- teema kutsub sobilikus kohas välja funktsiooni
the_content()
the_content()
leiab andmebaasist postituse sisu, valmistab selle kuvamiseks ette… aga enne kuvamist pakub võimalustthe_content
filtri külge haakinud funktsioonidele seda muuta- sinu funktsioon haagib ennast
the_content
filtri külge, teeb mida tahab ja tagastab tulemuse
add_filter( 'the_content', 'petskratt_rAndOmcASe' ); function petskratt_rAndOmcASe( $content ) { $str = str_split( strtolower( $content ) ); foreach ( $str as &$char ) { if ( rand( 0, 1 ) ) { $char = strtoupper( $char ); } } return implode( '', $str ); }
Ja tulemus näeb välja selline:
Fuksi värvi pealkiri on postitusest Kuidas kohandada WordPressi teemat ehk alamteema (child theme) kasutamine.