WordPressi haakimiskohad ehk konksud ja filtrid

Peeter Marvet
Jaga:

Antud blogipostitus on 61 kuud vana ning ei pruugi olla enam ajakohane.

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:

  1. teema kutsub sobilikus kohas välja funktsiooni the_content()
  2. 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
  3. 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.

Populaarsed postitused

Lokaliseerimine ja kvaliteetne tõlge: sild globaalsete turgude vahel

Lemme Suve
Digiajastul, kus piirid on muutunud virtuaalseks ja ettevõtted võivad jõuda klientideni üle kogu maailma, on kvaliteetne ja hästi läbimõeldud suhtlus...

Kliendi edulugu ehk kuidas Voog meie uuele VPS platvormile kolis

Tanel Männik
Käesoleva blogilooga heidame valgust ühele suvel aset leidnud ettevõtmisele, millega said kodumaise sisuhaldustarkvara Voo osad teenused virtuaalserveritest...

Hiina Veepiin ajab WordPresse hulluks

Ardi Jürgens
Zone analüütikud on pikka aega jälginud küberründeid, millel on ootamatuid sarnasusi iidse Hiina piinamismeetodiga. Nagu "veepiinamine", ei kujuta...

Kuidas Turbo nupp päästis E-smaspäeva

Katrin Sulg
Veebipood hammas32.ee jagas meiega oma positiivset kogemust Zone Turbo nupu kasutamisel, mis aitas neil E-smaspäeva kampaania ajal suurenenud koormusega...