Lees verder… » vervolgd

In het artikel Lees verder… » ben ik uitgebreid ingegaan op de (technische) werking van de WordPress samenvatting. In dit tweede deel behandel ik een paar praktische toepassingen zoals het veranderen van de ‘Lees meer…’ tekst.

 

correspondent_leesverderDe code die in dit artikel wordt getoond, kun je eenvoudig opnemen in het bestand functions.php dat je in de root folder van je theme vindt.

Let op dat themes en plugins op dezelfde filters kunnen ingrijpen en al deze toevoegingen kunnen met elkaar in conflict zijn. Als je een onverwacht resultaat krijgt, komt dat 9 van de 10 keer door conflicten bij het gebruik van deze filters.

 

Een andere ‘Lees meer…’

Om een andere tekst voor ‘Lees meer…’ te gebruiken haak je in op filter excerpt_more. In de code hieronder stellen we de prioriteit voor het uitvoeren van onze functie in op ’11’. De standaard prioriteit is 10 en door 11 te gebruiken vergroten we de kans om andere functies op dit zelfde filter te overschrijven.

add_filter( 'excerpt_more', 'exle_custom_excerpt_more',11 );
function exle_custom_excerpt_more( $more = null ) {
   return ' <a class="read-more" href="'. get_permalink( get_the_ID() ) . '">Lees verder...»</a>';
}

 

De lengte van de samenvatting aanpassen

Uit de tekst aangemaakte samenvattingen zijn standaad 55 woorden lang. Je kunt deze lengte ook aanpassen door een functie toe voegen aan het filter excerpt_length. In het voorbeeld hieronder brengen we de lengte terug tot 33.

add_filter( 'excerpt_length', 'exle_custom_excerpt_length' );
function exle_custom_excerpt_length( $length = null ) { 
   return 33; 
}

Zie ook het eerste deel van deze tweeluik om vast te stellen wanneer deze lengte wel en wanneer niet wordt gehonoreerd!

 

De lengte van de samenvatting weergeven

Het is niet de meeste elegante oplossing om script rechtstreeks in een pagina te injecteren. Maar wel reuze handig! Het script is nodig voor zowel nieuwe als bestaande pagina’s en wordt daarom aan twee action hooks gekoppeld. Met dit script wordt het aantal woorden waaruit je samenvatting bestaat, getoond. Wel zo handig als je om de lengte geeft!

add_action( 'admin_head-post.php', 'exle_excerpt_count_js');
add_action( 'admin_head-post-new.php', 'exle_excerpt_count_js');
function exle_excerpt_count_js() {
   echo '<script>jQuery(document).ready(function($){
      if ( typeof( jQuery("#excerpt").val() ) == "undefined" ) return;
      jQuery("#postexcerpt .handlediv").after("<div style=\"position:absolute;top:0px;right:25px;color:#666;\"><small>Lengte: </small><input type=\"text\" value=\"0\" maxlength=\"3\" size=\"3\" id=\"excerpt_counter\" readonly=\"\" style=\"background:#fff;\"> <small>woorden</small></div>");
      jQuery("#excerpt").keyup( function() {
         var matches = this.value.match(/\b/g);
         jQuery("#excerpt_counter").val( matches ? matches.length / 2 : 0 );
      }).keyup();
   });</script>';
}

 

Meer optimalisatie

Er is meer optimalisatie mogelijk. Zo kun je bijvoorbeeld met wat code er voor zorgen dat expliciete net zo worden afgehandeld als impliciete samenvattingen (en zich dan dus bijvoorbeeld aan dezelfde lengte moeten conformeren en dezelfde Lees verder tekst toegevoegd krijgen).

Standaard wordt alle HTML uit impliciete samenvattingen gefilterd terwijl deze in expliciete samenvattingen wel gehandhaafd blijft. Maar wat nu als je bijvoorbeeld wilt dat links in de samenvatting blijven werken? Ook dat kun je met een extra functie bereiken.

De beide mogelijkheden maken gebruik van het (relatief nieuwe) filter wp_trim_excerpt. Weten hoe je dat doet? Neem gerust even contact met me op!

 

 Over de afbeelding

correspondent_leesverderDe afbeelding heb ik geleend van de Correspondent, een dagelijks medicijn tegen de waan van de dag. Voor het geval dat u ook ècht verder wilt lezen. 🙂