Lees verder… »

Het gebruik van samenvattingen in WordPress lijkt arbitrair. Maar als je beter naar de lengte van de samenvatting en de gebruikte ‘Lees meer’ kijkt, merk je dat ook nu schijn weer bedriegt.

In het artikel Lees verder…» vervolgd ga ik in op een aantal praktische toepassingen van het onderstaande.

 

Samenvattingen volgens de codex

read_moreLaten we beginnen met een quote uit de WordPress codex, waarbij aangetekend dat de betreffende pagina als incompleet is gemarkeerd. Het geeft in ieder geval alvast enig inzicht.

The manual WordPress excerpt is often confused with the automatic excerpt or with the teaser (the part of a post that appears on the front page when you use the More tag). While both are related to the manual excerpt, they are different from it.

The relationship between the three is this: When a post has no manual excerpt and the post template uses the the_excerpt() template tag, WordPress generates an excerpt automatically by selecting the first 55 words of the post. When the post template uses the the_content() template tag, WordPress will look for the More tag and create a teaser from the content that precedes the More tag.

 

Het theme bepaalt

Voordat we ons storten op de werking van samenvattingen, is het belangrijk om vast te stellen dat je WordPress theme (in combinatie met plugins) bepaalt hoe en wat wordt weergegeven. En niet ieder theme toont samenvattingen – of enig ander onderdeel – op dezelfde manier.

WordPress_samenvattingenIn de administratie kun je zowel de samenvatting gebruiken als de ‘more tag’ (zie bijgaande afbeelding). Met onderstaande info kun je bepalen hoe beiden door je theme weergeven zouden moeten worden.

[clear]

 

the_excerpt()

the_excerpt()
Deze tabel is gebaseerd op gebruik van the_excerpt(). In dit geval (i.e. bij gebruik van the_excerpt() zonder verdere aanpassingen) is de standaard Lees meer tekst: […]
Situatie Resultaat Lengte Vervolg indicatie HTML Opmerkingen
Er is een samenvatting De tekst van de samenvatting wordt gebruikt De gehele samenvatting wordt gebruikt, ongeacht de lengte Er wordt geen Vervolg indicatie […] toegevoegd Toegestaan Een samenvatting wordt dus alltijd in zijn geheel overgenomen en krijgt nooit een Vervolg indicatie […]
Shortcodes worden (dus) overgenomen alsof ze gewone tekst zijn.
Er is geen samenvatting  –  –  –  –  –
Er is een <!more> tag in de tekst aanwezig De tekst voor de <!more> tag wordt gebruikt in archive views. Voor single en page views dient echter global $more ingesteld te worden om te voorkomen dat de tekst voorbij de <!more> tag gebruikt wordt tot een lengte van excerpt_length. De tekst wordt afgekapt op ‘excerpt_length’ Alleen als de tekst wordt afgekapt, wordt een Vervolg indicatie […] toegevoegd HTML wordt verwijderd Shortcodes worden geheel verwijderd.
Er is geen <!more> tag in de tekst aanwezig  –  –  –  –  –
Er is tekst aanwezig De tekst wordt gebruikt De tekst wordt afgekapt op ‘excerpt_length’ Alleen als de tekst wordt afgekapt, wordt een Vervolg indicatie […] toegevoegd HTML wordt verwijderd Shortcodes worden geheel verwijderd.
Er is geen tekst aanwezig Er wordt niets getoond  –  –  –  –

 

 

the_content()

the_content()
De volgende tabel is gebaseerd op gebruik van the_content( $more_link_text = null, $strip_teaser = true ). In dit geval (i.e. bij gebruik van the_content() zonder verdere aanpassingen) is de standaard Lees meer tekst: (meer…)
Let op dat de link van deze Lees meer tekst voorzien is van een label waarmee de doelpagina wordt gepositioneerd op het punt waar de tekst na de <!more> tag begint. Dit is (tegenwoordig) geen wenselijk gedrag. Er zijn plugins beschikbaar om deze werking eenvoudig uit te schakelen.
Als parameter $strip_teaser = true wordt gebruikt op de pagina van het bericht zelf, wordt alleen de tekst na de <!more> tag getoond. Alle tekst voor die tag is de ‘teaser’ die niet wordt getoond.
Situatie Resultaat Lengte Vervolg indicatie HTML Opmerkingen
Er is een <!more> tag in de tekst aanwezig De tekst voor de <!more> tag wordt in zijn geheel gebruikt De tekst wordt niet afgekapt De Vervolg indicatie (meer…) wordt toegevoegd Toegestaan Shortcodes worden verwerkt en het resultaat getoond.
Er is geen <!more> tag in de tekst aanwezig  –  –  –  –  –
Er is tekst aanwezig De gehele tekst wordt gebruikt De tekst wordt niet afgekapt Er wordt geen Vervolg indicatie toegevoegd Toegestaan Shortcodes worden verwerkt en het resultaat getoond.
Er is geen tekst aanwezig  –  –  –  –  –
Er is een samenvatting De tekst van de samenvatting wordt gebruikt De tekst wordt niet afgekapt Er wordt geen Vervolg indicatie toegevoegd  – Shortcodes worden verwerkt en het resultaat getoond.
Er is geen samenvatting Er wordt niets getoond  –  –  –  –

 

 

Functies en filters

De belangrijkste functies en filters in deze context zijn de volgende:

  • functies the_content() en get_the_content()
  • functies the_excerpt() en get_the_excerpt()
  • functie has_excerpt() kan gebruikt worden om te testen of een bericht een Samenvatting heeft. Maar let op: de functie is alleen True indien veld Samenvatting is gevuld. False in alle andere gevallen. De functie test hard op $post->post_excerpt dus filters als excerpt_more hebben geen invloed.
  • filter excerpt_more – te gebruiken om de Lees meer tekst aan te passen – maar dat werkt alleen voor de situaties waarin een Samenvatting moet worden afgeleid van de Tekst
  • filter excerpt_length – zie de opmerking voor filter excerpt_more hierboven
  • filter the_excerpt – toegepast in functie the_excerpt(). Via dit filter wordt o.a. wat auto-opmaak (wptexturize, wpautop, etc) toegepast
  • filter get_the_excerpt – toegepast in functie get_the_excerpt(). Standaard wordt functie wp_trim_excerpt() aan dit filter toegevoegd en hier wordt een groot deel van de formatering afgehandeld.
  • functie wp_trim_excerpt() werkt in grote lijnen als volgt:
    • als geen expliciete Samenvatting (i.e. post->excerpt) aanwezig is:
      • $excerpt_length = apply_filters( ‘excerpt_length’, 55 ); — hier wordt de lengte in woorden ingesteld
      • $excerpt_more = apply_filters( ‘excerpt_more’, ‘ ‘ . ‘[&hellip;]’ ); — hier wordt de Lees meer tekst gezet
      • $text = wp_trim_words( $text, $excerpt_length, $excerpt_more );
      • $text = wp_strip_all_tags( $text );
      • apply_filters( ‘wp_trim_words’, $text, $num_words, $more, $original_text );
    •  apply_filters( ‘wp_trim_excerpt’, $text, $raw_excerpt );

 

Ander gebruik van Samenvattingen en hun functies

Houd er rekening mee dat de samenvatting functies ook op andere manieren wordt gebruikt. Dit kunnen ‘core’ toepassingen zijn, zoals het gebruik bij opbouw van het menu, of plugin toepassingen zijn zoals toevoeging van Open Graph data t.b.v. Facebook:
<meta property=De opgevraagde gebruiker bestaat niet.og:descriptionDe opgevraagde gebruiker bestaat niet. content=De opgevraagde gebruiker bestaat niet.…samenvatting…De opgevraagde gebruiker bestaat niet.>

 

Praktische toepassingen

Lees het vervolg op dit artikel voor enkele praktische toepassingen.