Het is niet geheel ondenkbaar, zelfs behoorlijk waarschijnlijk, dat je vroeg of laat een standaard regel tekst, afbeeldingen of knoppen onder of boven aan je blogpost wilt plaatsen. In dit voorbeeld doen we dit met een regel tekst, maar we kunnen het eigenlijk met iedere vorm van HTML doen. Denk hierbij bijvoorbeeld aan een standaard banner (voor jouw product) boven iedere blogpost, of een standaard tekst onderaan.
Wanneer je een theme builder als Elementor Pro gebruikt kan je dat natuurlijk makkelijker en heel flexibel doen, maar ook wanneer je met ’traditionele’ WordPress thema’s werkt, is dit goed mogelijk. En dat zonder enige plugin te installeren.
Tekst boven de blogpost plaatsen
Laten we beginnen met een voorbeeld hoe we tekst boven een blogpost kunnen plaatsen.
<?php
add_filter(‘the_content’, ‘wxp_add_content_before’);
function wxp_add_content_before($content) {
$my_custom_text = ‘<div class="wxp-custom-top">This is the text to show!</div>’;
if(is_single() && !is_home()) {
if ('post' == get_post_type()) { //We willen dit alleen voor het post post_type.
$content = $my_custom_text . $content;
}
}
return $content;
}
Ik heb hier de tekst die ik wil plaatsen tussen <div> tags gezet. Want hoogstwaarschijnlijk zal ik controle willen hebben over de opmaak van die tekst en dank zij de ‘div’ tags, kan ik deze tekst direct identificeren.
Regel 10 verdient misschien wat extra aandacht.
Zoals je in regel 4 hebt kunnen zien, krijgt de functie wxp_add_content_before() een parameter mee met de naam $content.
Deze $content bevat -het zal je niet verbazen- de content van de blogpost. Hier wil je een regel aan het begin van deze content toevoegen. In PHP heeft de punt (.) de rol van de ‘concatenatie operator’, ofwel, de operator die series tekens aan elkaar plakt. In veel talen wordt dit door het + teken gedaan, maar in PHP dus niet.
Prioriteiten
Wanneer je meerdere plugins actief hebt die ‘iets’ met de content van je blogposts doen, dan kan het gebeuren dat de door jou ingevoegde zin niet op de door jou gewenste plaatst staat. Dat komt omdat meerdere functies aangeroepen kunnen worden door de ’the_content’ filter hook. Om enigzins controle te hebben over de volgorde waarin dit gebeurt, kan je aan een ‘add_filter’ of ‘add_action’ functie ook een prioriteit meegeven.
Zo’n prioriteit is een getal, waarbij lagere getallen eerst, en hogere getallen als laatste uitgevoerd zullen worden.
Het is een soort van ‘afspraak’ voor plugin bouwers, dat we deze prioriteiten in stapjes van 10 op laten lopen. Dus 10 betekent ‘als eerste’, en een heel hoog getal ‘als laatste’.
Wanneer ik dus de tekst helemaal aan het begin van de content wil hebben, dan zou mijn ‘add_filter’ er als volgt uit kunnen zien (dit vervangt dus de code in regel 2)
add_filter(‘the_content’, ‘wxp_add_content_before’,9);
Wil ik de tekst als laatste boven de content hebben, dan voeg ik de volgende regel in :
add_filter(‘the_content’, ‘wxp_add_content_before’,999999);
Maar wat nu, wanneer ik mijn extra tekst onderaan wil hebben?
Tekst onder de blogpost plaatsen
<?php
add_filter(‘the_content’, ‘wxp_add_content_before’);
function wxp_add_content_before($content) {
$my_custom_text = ‘<div class="wxp-custom-bottom">This is the text to show!</div>’;
if(is_single() && !is_home()) {
if ('post' == get_post_type()) { //We willen dit alleen voor het post post_type.
$content .= $my_custom_text;
}
}
return $content;
}
Het enige wat hier is veranderd is regel 10. Maa die regel 10 ziet er nu wel ineens heel vreemd uit. Hoe moet ik dit lezen?
Ik had regel 10 ook op een andere manier kunnen schrijven.
$content = $content . $my_custom_text;
Ok, dat ziet er weer logisch uit. Je voegt dus $my_custom_text toe aan $content.
Maar omdat programmeurs van nature lui zijn (ze proberen repeterende taken zo efficient mogelijk uit te voeren), tikken ze liever geen teken te veel in. En .= betekent dus eigenlijk ‘voeg de tekst achter de operator toe aan de tekst die in de variabele voor de operator staat’.
Ook met rekenkundige bewerkingen kunnen PHP programmeurs geweldig lui zijn. Wil ik 4 bij x optellen, dan schrijf ik gewoon
$x += 4;
Dat is dus hetzelfde als
$x = $x + 4;
of nog luier, 1 optellen bij $x
$x++;
Dat is weer hetzelfde als
$x = $x + 1;
En behalve een nuttige code snippet heb je nu ook iets meer inzicht gekregen in de programmeertaal PHP.