Verbeterde zoekfunctie MaartenvandeKamp.nl

De zoekfunctie van WordPress is vrij standaard en daarom ook beperkt in de mogelijkheden. Ik las pas op internet dat deze zoekfunctie op datum zoekt en niet op relevantie.

Als je zoekt op een algemene term, bijvoorbeeld Lens, dan krijg je alle artikelen te zien waarin het woord Lens voorkomt, maar op datum! Dus het artikel waar de bezoeker naar opzoek is kan ook op pagina 3 staan. En dat wil ik niet.

Relevanssi

Daarom heb ik de plugin Relevanssi geïnstalleerd. Met deze plugin kan ik veel meer instellen en er kan ook op relevantie gezocht worden. Daarvoor wordt MySQL ingezet, de database waarop WordPress is geïnstalleerd. Er wordt gezocht naar text en de afstand waarop woorden bij elkaar staan.

Dat zorgt ervoor dat de meest relevantie artikelen bovenaan staan en daar achteraan komt de rest.

Gerelateerde artikelen zonder plugin

Sinds twee maanden maak ik gebruik van een PHP script wat verwante artikelen opzoekt in de database. De relevantie wordt gebaseerd op de aanwezige tags van het artikel.

Daarvoor wordt een aparte query uitgevoerd die lijkt op de oorspronkelijke query voor het ophalen van het juiste artikel. Het artikel en de bijbehorende tags worden uitgelezen aan de hand van het ID van het artikel.

Dit werkte goed, alleen soms bleven reacties onder artikelen weg, ze werden simpelweg niet weergegeven. Na wat onderzoek bleek dat de query voor de verwante artikelen hiermee te maken had. Deze haalde opnieuw het ID op maar deed er verder niets mee, waardoor het reactieformulier niets ophaalde.

Door 1 regel toe te voegen is dit hele probleem opgelost. Het gaat om de volgende code:

wp_reset_query();

Deze code komt helemaal onderaan het blok code wat voor de verwante artikelen zorgt. De nieuwe query wordt gestopt en WordPress kan weer verder met de oorspronkelijke query waardoor ook het reactieformulier weer de juiste ID’s tot zijn beschikking krijgt. Het resultaat is dat de reacties weer worden getoond!

Juni 2012

Juni 2012 is de eerste maand die volledig is als het gaat om statistieken. Ik registreer mijn bezoekers met de serverlogs en laat deze uitlezen door AWstats.

Daar is het volgende resultaat uitgekomen:

  • Er zijn 1325 unieke bezoekers geweest
  • Er zijn 1962 bezoekers geweest, gemiddeld 1.48 bezoeken per bezoeker
  • Er zijn 7200 pagina’s bekeken
  • Bezoekers hebben voor 173 MB aan verkeer gegenereerd
  • En robots en andere automatische software hebben voor 236 MB aan verkeer gegenereerd. Daarvan ben ik er een heleboel gaan blokkeren omdat het onnodig veel verkeerd veroorzaakt.
  • Google heeft 9000 keer mijn site bezocht en heeft als grootste robot daarvan 132 MB aan verkeer voor zijn rekening genomen.
  • Het meest gelezen artikel is Lightroom Handleidingen en Tutorials, met 540 bezoeken deze maand.
  • Vanaf 19 juni ben ik ook verkeer gaan monitoren vanaf s0.maartenvandekamp.nl en dat heeft tot op heden (30 juni 2012) voor 163 MB aan internetverkeer opgeleverd.

Gemiddeld voor www.maartenvandekamp.nl

  • 62 bezoeken per dag
  • 112 pagina’s bezocht
  • 496 hits
  • 5.78 MB verzonden

Gemiddeld voor s0.maartenvandekamp.nl (sinds 19 juni)

  •  298 hits
  • 5.45 MB verzonden

Nu is het interessant om te zien wat er volgende maand gaat gebeuren. Juli is een maand waarin veel mensen op vakantie gaan én gaan fotograferen. Misschien zorgt dit wel voor een enorme opleving van mijn website.

Voorkom Image Hotlink met Nginx

Voor MaartenvandeKamp.nl gebruik ik de webserver Nginx. Een lichtgewicht webserver met heel veel mogelijkheden. Een daarvan heb ik ingezet om te voorkomen dat websites naar mijn afbeeldingen kunnen linken.

Ik gebruik voor het serveren van statische bestanden het domein s0.maartenvandekamp.nl. Vanaf dit domein worden alle statische bestanden, zoals .jpg, .png en andere, aangeboden aan de bezoeker. Om te voorkomen dat websites gebruik maken van mijn foto’s is het nodig om de directe toegang tot deze bestanden te verbieden. Dat klinkt nogal grof, maar het kan mijn site enorm vertragen, mocht het gebeuren!

Ik heb de volgende code gebruikt om ervoor te zorgen dat bestanden niet direct te openen zijn:

location / {
valid_referers blocked www.maartenvandekamp.nl;
if ($invalid_referer)
{
return 405;
}
}

Wat deze code doet is heel eenvoudig. Het controleert of de aanvraag voor een afbeelding van het domein www.maartenvandekamp.nl komt. Is dat niet het geval? Dan wordt de verbinding direct verbroken.

Nginx kent daar een aparte statuscode voor, namelijk 405 Not Allowed.