Zone'i blogi

WordPressi haakimiskohad ehk konksud ja filtrid

Foto: Unsplash

Haak või kõrvalepõige on nagu nõudepeatus või küsimus “Kas astun töölt koju tulles poest läbi?” ehk kellegi kirjutatud koodi on taotluslikult jäetud võimalus selle kulgu mõjutada.

WordPressis on kahte sorti haakimiskohti:

  • hook ehk konks on nagu nagi, kuhu igaüks saab riputada oma täitmist vajavad funktsioonid;
  • filter võimaldab huvilistel andmeid mudida, reeglina enne väljastamist.

Konks

Selle illustreerimiseks sobib näide, kus on lisatud Google Analytics’i header.php kood:

Kuna header.php sai kopeeritud alamteema kataloogi, tuleb sellise laiendamise puhul arvestada, et kui põhiteemas see fail uueneb, on vaja neid esiteks märgata, teiseks aga ka 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 alguses. Päris esimeseks ei saa, aga need eelnevad metaväljad ei ole ka kuidagi probleemiks.

Nüüd võib ka Twenty Nineteen’i julgesti uuendada, alamteema muudab põhiteema ja WordPress’i käitumist vastavalt parimale tavale.

Selliseid konkse on WordPressis umbes 800 – ja lisaks 1700 filtrit.

Filter

Konks on abiks, kui on soov ise midagi väljastada – aga mida teha juhul, kui tahetakse 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õimalust the_content filtri külge haakinud funktsioonidele seda muuta;
  • 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:

Vaata lisaks Kuidas kohandada WordPressi teemat ehk alamteema (child theme) kasutamine.

Märksõnad: , ,

Ära jää ilma päeva põnevamatest lugudest

Telli Geeniuse uudiskiri

Saadame sulle igal argipäeval ülevaate olulisematest Geeniuse teemadest.

Populaarsed lood mujal Geeniuses