Als het gaat om WordPress-sites, kunnen ze niet allemaal hetzelfde worden behandeld in termen van prestaties. Een eenvoudige WordPress-site van vijf pagina’s gedraagt zich heel anders dan een grote WooCommerce-site (welke erg veeleisend kan zijn). WordPress-Membership en community-sites zijn een ander type dat valt in wat wij soms de “lastige” categorie noemen. Als je het niet goed instelt of juist configureert, kom je al snel in een nachtmerrie van 500 foutmeldingen, downtime en langzame pagina’s. Maar dat betekent niet dat je geen opties hebt, je hoeft alleen maar een aantal beste richtlijnen te volgen.
Vandaag zullen we een aantal van de do’s en don’ts voor WordPress-membership sites verkennen en hoe deze het best kunnen worden geoptimaliseerd om optimale prestaties, schaalbaarheid en levensduur te garanderen. 🚀
- Voorbeelden van Membership websites
- Waarom WordPress Membership websites anders zijn
- Wat moet je Wel doen voor Membership websites
- Wat moet je Niet doen voor Membership websites
Voorbeelden van Membership websites
Hier zijn enkele voorbeelden van veelvoorkomende WordPress Membership- en community-websites:
- Een site gebouwd rond een Learning Management System (LearnDash, Lifter LMS) dat digitale cursussen verkoopt aan leden. Deze worden de laatste tijd steeds populairder en er zijn inmiddels een aantal geweldige LMS plugins!
- Een forum gebaseerde (bbPress of BuddyPress) WordPress-site die voornamelijk door leden wordt gebruikt om verschillende onderwerpen te bespreken.
- Een membership website die is gebouwd op een van de vele populaire all-in-one externe membership plugins (MemberPress of Ultimate Membership Pro).
- Een sociale netwerk gerichte communitysite (PeepSo).
- Sommigen kunnen ook eCommerce-oplossingen zoals WooCommerce en Easy Digital Downloads als membership sites opnemen, omdat veel van deze gebruikersprofielen en community-functies hebben.
Waarom zijn WordPress Membership Websites Anders
Voordat we ingaan op de do’s en don’ts, laten we een paar redenen onderzoeken waarom WordPress membership sites anders zijn dan de standaard blog of website voor kleine bedrijven.
1. De Content is Niet Cachebaar
Allereerst bevatten Membership sites veel inhoud die niet cachebaar is en pagina’s die voortdurend veranderen. Dingen zoals de inlogpagina voor leden (die constant geraakt kunnen worden afhankelijk van de grootte van de site), betalingspagina’s voor digitale goederen of cursussen, en discussieborden zijn veelvoorkomende boosdoeners en pijnpunten, omdat deze meestal niet in de cache kunnen worden geplaatst.
Daar eindigt het echter niet. Op standaard WordPress-sites staat het WordPress-dashboard ook niet in de cache voor “ingelogde” gebruikers. Dit is prima als je slechts een paar auteurs en beheerders hebt, maar wanneer je plotseling duizenden leden hebt die het dashboard gebruiken, veroorzaakt dit onmiddellijk prestatieproblemen, omdat geen van de leden vanuit de cache op de server wordt bediend. Dit betekent dat je achter de schermen de kracht en architectuur nodig hebt om dit aan te kunnen. Shared hosting providers verlammen meestal onder deze omstandigheden.
In de analyse tool van MyKinsta die we leveren aan klanten, kan je zien hoe veel de cache wordt overgeslagen. Hieronder zie je een voorbeeld van een site waar het overgrote deel van de verzoeken niet vanuit de cache wordt weergegeven.
2. Een Grote Hoeveelheid Gelijktijdige Bezoekers
Het tweede probleem dat Membership sites meestal hebben, is een groot aantal gelijktijdige bezoekers en sessies. Op een informatieve of zakelijke WordPress-site blijft een bezoeker vijf of tien minuten totdat ze vinden wat ze nodig hebben (en dit is hoog, meestal zijn de bounce-percentages veel hoger). Op Membership websites heb je het tegenovergestelde. Bezoekers komen meestal naar de site om iets te doen. Als ze een online cursus volgen, is het niet ongebruikelijk dat ze uren blijven. Je kunt zien waar dit naartoe gaat. Het aantal gelijktijdige bezoekers die zijn verbonden met jouw WordPress-host loopt snel op.
Om het nog erger te maken, heb je vervolgens een groot aantal gelijktijdige bezoekers bovenop het probleem met “inhoud die niet cachebaar is”.
3. Complexe Queries
Als derde genereren membership sites gewoonlijk complexere queries, wat op zijn beurt extra latency toevoegt aan het ophalen van de informatie uit de MySQL-database. Veel hiervan is eenvoudigweg te wijten aan alle extra bewegende delen en grote hoeveelheden gegevens. Dit kan ook worden veroorzaakt op sites die sterk afhankelijk zijn van zoekopdrachten voor navigatie of vaak WP_Query
gebruiken.
Om nog maar te zwijgen, je hebt dan ook nog grote hoeveelheden gelijktijdige gebruikers die continu de database bevragen.
4. Opslag van Grote Hoeveelheden Gegevens
Het is niet echt verrassend, maar Membership sites slaan veel gegevens op en als ze niet goed worden beheerd (wat we verderop zullen bespreken), kan de schijfruimte snel vol lopen. Dit geldt ook voor de levensduur van de site. Video’s, cursussen, Membership- en profielinformatie, discussies, digitale downloads, etc. Dit zijn allemaal maar een paar van de vele verschillende soorten inhoud die snel oplopen.
Wat moet je wel doen voor WordPress Membership sites
We hebben veel Membership sites bij Kinsta en onze technici werken dagelijks samen met deze site-eigenaren. Hoewel we gebruikers altijd aanmoedigen om de beste praktijken voor web-prestaties te implementeren, zijn deze meestal niet genoeg als het gaat om dit type website. Dus vandaag laten we je een paar manieren zien om de extra stap te zetten om ervoor te zorgen dat de bezoekers van jouw Membership site de best mogelijke ervaring hebben.
1. Kies een Prestatie-gerichte WordPress Hosting
Advies om een betere WordPress host te kiezen lijkt op dit moment misschien een beetje overbodig, maar de waarheid is dat veel prestatieproblemen met membership pagina’s hiernaar terug te leiden zijn. We hebben keer op keer gezien dat klanten van andere providers naar Kinsta migreren en meteen drastische verbeteringen zien. Ons hele bedrijf, van de infrastructuur die we achter de sites plaatsen, tot de ingenieurs die wij inhuren, zijn op prestaties gericht. Dit is altijd zo geweest en zal nooit veranderen.
Quite impressed what @googlecloud and @kinsta can pull of for #WordPress hosting! #DevOps #Cloud #WPDev #webdevelopment pic.twitter.com/Cr7UMaHdpH
— Neuralab (@Neuralab) July 22, 2017
Hoe versneld Kinsta Membership Websites
Kinsta was de eerste managed WordPress-host die exclusief gebruik maakt van Google Cloud Platform. We bieden 20 verschillende datacenters over de hele wereld, wat betekent dat je er een kunt kiezen die het dichtst bij jouw bezoekers ligt om de latency en TTFB te verlagen. Hoewel andere hosts het standaard netwerk van Google kunnen gebruiken (goedkoper en trager), maken wij gebruik van het premium netwerk van Google. Dit is ontworpen om de afstand en hops te minimaliseren, wat resulteert in sneller en veiliger, wereldwijd transport van jouw gegevens.
Om je WordPress site veiliger te maken, maken we ook gebruik van de Enterprise firewall van Google Cloud. In tegenstelling tot andere hosts die strikt op software gebaseerde firewalls op webserverniveau gebruiken, bevindt onze primaire firewall zich binnen het netwerk van Google – dus buiten ons eigen netwerk van virtuele machines. Hiermee kunnen we schadelijk verkeer blokkeren, nog voordat het ons netwerk binnenkomt en wordt de belasting op onze loadbalancers en virtuele machines verminderd.
Ons hosting platform valt niet in een van de traditionele hosting categorieën en verschilt sterk van traditionele shared, VPS of dedicated infrastructuur. Kinsta maakt gebruik van door LXD beheerde hosts en LXC-softwarecontainers voor elke site. Wat dit betekent is dat elke WordPress membership site zich bevindt in zijn eigen geïsoleerde container, die alle software resources heeft die nodig zijn om te werken (Linux, Nginx, PHP, MySQL). De resources zijn 100% privaat en worden niet gedeeld met iemand anders of zelfs met jouw eigen sites.
Bovendien stellen we voor al onze klanten GCP’s compute-optimized CS machines beschikbaar zonder extra kosten. De C2 machinefamilie is uitgerust met de nieuwste schaalbare Intel Xeon processors en bevatten een 3.8 GHz sustained all-core turbo. Met krachtige C2machines die je WordPress lidmaatschapssite aansturen, kunnen vaak voorkomende niet-gecachte verzoeken en databasequery’s sneller worden uitgevoerd, wat resulteert in een betere ervaring voor je bezoekers.
Elke membership site kan ook profiteren van onze schaalbare infrastructuur om abrupte pieken in het verkeer en belasting beter te kunnen verwerken. Hierdoor kan je jouw WordPress-membership site uitbreiden zonder je zorgen te hoeven maken over de algemene beperkingen en harde limieten die andere hosting providers afdwingen.
Lees meer over hoe Kinsta anders is.
2. Gebruik het Voordeel van PHP 8.1
We kunnen niet genoeg benadrukken hoe belangrijk het is om een van de nieuwste versies van PHP te gebruiken, bij voorkeur PHP 8.1. Voor veel sites vereist dit geen extra werk en het is een gratis en directe verbetering van de prestaties!
PHP 7.4 wordt niet langer ondersteund bij Kinsta. Let op: we ondersteunen PHP versies 7.4, 8.0, 8.1, 8.2 en 8.3.
We hebben onze PHP prestatiebenchmarks gepubliceerd waarin we PHP 7.2, 7.3, 7.4, 8.0 en 8.1 hebben getest. Zoals je hieronder kunt zien, op een WooCommerce site, neemt PHP 8.0 het voortouw wat betreft de snelste prestaties! 🍰 en 8.1 was zelfs nog sneller.
We hebben ook Easy Digital Downloads getest en opnieuw presteerde PHP 8.0 beter dan al het andere.
Als je huidige WordPress host geen PHP 8.0 of hoger ondersteunt, is het misschien tijd om een nieuwe host te zoeken. Kinsta biedt en ondersteunt PHP versies 8.0 en 8.1. Je kunt in het MyKinsta dashboard gemakkelijk met één klik tussen deze versies schakelen.
Wanneer jouw membership site compatibiliteitsproblemen heeft met de nieuwste versie van PHP, is het waarschijnlijk tijd om de plugin of thema-ontwikkelaar te vragen waarom hij achterloopt of jouw eigen WordPress-ontwikkelaar in te huren om het probleem op te lossen. Je wilt de prestatieverbeteringen van PHP 8 en hoger niet laten liggen.
3. Maak gebruik van Object Caching
Caching maakt websites sneller en vermindert de belasting van de webserver. Of je nu een caching-plugin of een managed host zoals Kinsta gebruikt waar caching op serverniveau is geïmplementeerd, dit is iets wat je al zou moeten doen. Op het gebied van WordPress-membership sites zijn de gebruikelijke caching-instellingen meestal niet voldoende, omdat ze er niet altijd optimaal gebruik van maken. Dit is waar object caching om de hoek komt kijken.
Object cache slaat de resultaten van database-queries op zodat de volgende keer dat een specifiek bit van gegevens nodig is, het uit de cache kan worden geserveerd zonder de database te hoeven raadplegen. Dit versnelt PHP-uitvoertijden en vermindert de belasting van je database. Dit wordt uiterst belangrijk bij membership sites! Met WordPress kan je object caching op verschillende manieren implementeren:
- Een externe caching-oplossing zoals W3 Total Cache
- Redis (aanbevolen)
- Memcached
Wij bieden Redis aan als add-on bij Kinsta, zodat jij ten volle kunt profiteren van persistente objectcaching voor uw membership site. Het goede nieuws is dat, als het eenmaal is geconfigureerd, je nog steeds de optie Cache wissen kunt gebruiken die is toegevoegd aan je dashboard door de Kinsta MU-plugin. Met deze knop worden zowel onze pagina cache als eventuele objectcaching op de site gewist.
In sommige gevallen kunnen we ook een specifieke pagina of URL cachen voor ingelogde gebruikers. Je moet hier echter eerst met ons ondersteuningsteam over praten, want het is belangrijk dat je alle consequenties van het inschakelen begrijpt.
4. Verbeter de WordPress Zoekfunctie
Naarmate een membership site groter wordt, zul je waarschijnlijk ontdekken dat de standaard zoekfunctie van WordPress niet genoeg is. Sites die zwaar gebruikmaken van WP_Query, zoekfunctie gebruiken als hun belangrijkste navigatiemiddel of zelfs een site met een groot aantal berichten, kunnen problemen met de prestaties ondervinden, naarmate de zoekopdrachten langer worden. Dit is waar een zoekmachine zoals Elasticsearch kan helpen.
Elasticsearch kan worden gebruikt om het opvragen van de WordPress-database te versnellen. Dit wordt gedaan door een index van de inhoud van de database van jouw site te bouwen en vervolgens Elasticsearch te gebruiken om veel sneller in deze index te zoeken dan dat er met een MySQL-query dezelfde zoekopdracht kan worden uitgevoerd.
5. Maak een Lichte 404 Pagina
We hebben uit eerste hand gezien dat membership websites meestal veel 404-fouten genereren. Je site genereert er waarschijnlijk meer dan je denkt! Onze analyse-tool in MyKinsta kan je helpen de exacte hoeveelheid vast te stellen (zoals hieronder te zien is).
Je kunt ook 404-fouten in Google Search Console controleren of een plugin van derden zoals Redirection installeren die 404-fouten registreert. Onthoud echter dat plugins als deze ook impact hebben op de prestaties. Het is veel beter om te vertrouwen op een tool op serverniveau.
De reden dat deze fouten slecht zijn, is dat veel 404 pagina’s zeer intensief zijn. Voor een membership site moet je een zware 404-pagina vermijden. Maak een eenvoudig 404-template die voorkomt dat de database verder wordt bevraagd. En besteed, uiteraard, wat tijd en repareer de 404-fouten, want dit is niet alleen resource intensief, het is slecht voor de gebruikerservaring.
Naast het gebruik van een lichtgewicht 404 pagina, is het ook een goed idee om een speciale paginacacheregel voor 404 pagina’s toe te voegen. Als je klant bent bij Kinsta, hoef je je hier geen zorgen over te maken. Onze Nginx configuratie cachet 404 pagina’s voor 15 minuten. Als we detecteren dat er een nieuwe pagina met dezelfde URL als een gecachete 404 pagina is gemaakt, zullen we de cache indien nodig legen. Als je WordPress site geen cachebare 404 pagina’s heeft, raden we je aan om samen met je host te kijken of deze mogelijkheid aan de webserver toegevoegd kan worden.
6. Verhoog het aantal PHP Workers
PHP-workers is misschien een term waarvan je nog nooit gehoord hebt, maar zij zijn verantwoordelijk voor het beperken van verzoeken (in plaats van dit te laten beperken door CPU of RAM, wat typisch iets is wat shared hosting providers doen).
PHP Workers bepalen hoeveel gelijktijdige verzoeken jouw site op een bepaald moment kan verwerken. Om het simpel te houden, elke niet-gecachet verzoek voor jouw website wordt afgehandeld door een PHP Worker. Als je bijvoorbeeld 4 verzoeken hebt die tegelijkertijd op jouw site terechtkomen en jouw site heeft 2 PHP Workers, worden twee van die verzoeken verwerkt terwijl de andere twee in de wachtrij moeten wachten totdat de eerste twee zijn afgerond.
Vergeet niet dat we eerder hebben besproken dat een van de grootste problemen met WordPress-membership sites al die niet-gecachte verzoeken zijn. Dit is de reden waarom PHP Workers heel belangrijk zijn omdat zij elk verzoek moeten werken. Daarom hebben deze sites doorgaans extra PHP Workers nodig om ervoor te zorgen dat elk verzoek zonder vertraging verwerkt en met succes voltooid wordt.
Wat gebeurt er als je jouw PHP workers continu maximaal belast? In principe begint de wachtrij oudere verzoeken uit te stoten, wat kan resulteren in 500 foutmeldingen op de site. Elk hosting pakket van Kinsta bevat een vooraf gedefinieerd aantal PHP workers. Als je problemen hebt met het schatten van wat jouw site nodig heeft, is deze handleiding handig: PHP worker aanbevelingen voor membership websites. Maar je kunt ook altijd chatten met ons verkoop- of ondersteuningsteam.
7. Voer Regelmatig Database Onderhoud uit
Regelmatig database-onderhoud is niet alleen aanbevolen voor WordPress-membership websites, het is verplicht! Als je dit niet doet, zal je jezelf op een dag waarschijnlijk afvragen waarom je site niet vooruit te branden is. Hier zijn enkele aanbevelingen:
Ruim Autoloaded-gegevens op
Autoloaded data is data die op elke pagina van jouw WordPress-site wordt geladen. Deze gegevens worden opgeslagen in de wp_options
tabel. Op grote sites kan deze tabel snel uit de hand lopen. Bekijk onze uitgebreide handleiding over het opschonen van automatisch geladen gegevens.
Transients en CRON jobs opschonen
Net als bij automatisch geladen gegevens, moet je ook regelmatig transients opruimen. Bij het werken op de juiste manier verlopen transients uit zichzelf en zouden zichzelf moeten verwijderen, maar dit is niet altijd het geval. Als iets verkeerd geconfigureerd of zelfs beschadigd is, kunnen deze echt opstapelen.
We hadden bijvoorbeeld een klant waarbij er iets misging met het verlopen van transients en het bracht de hele site tot stilstand. Nadat we erin waren gaan graven, ontdekten we dat de site 695.846 transiënte records (rijen) in de database had. Na het verwijderen van de rijen (die Transients bevatten die al waren verlopen), herstelde de site zich onmiddellijk (zoals hieronder te zien is).
Je kunt de gratis Transients Manager-plugin gebruiken om transients op jouw WordPress-site te bekijken, zoeken, bewerken en verwijderen. Als u wat technischer bent, kunt u ook WP-CLI-opdrachten gebruiken om overgangen te verwijderen.
CRON jobs (WP-Cron), die wordt gebruikt om herhalende taken voor jouw WordPress-site in te plannen, kunnen ook soortgelijke problemen hebben. Je kunt de gratis WP Control-plugin gebruiken om te controleren en ervoor te zorgen dat jouw CRON jobs niet uit de hand lopen.
Verander de Database Engine naar InnoDB
Tenslotte, moet je jouw database-engine wijzigen naar InnoDB als je dat nog niet heeft gedaan. Veel oudere sites gebruiken nog steeds de MyISAM-engine in hun database. In de afgelopen jaren heeft InnoDB bewezen beter te presteren en betrouwbaarder te zijn. Een grote reden om InnoDB via MyISAM te gebruiken, is dat je geen problemen ondervindt met volledige vergrendeling op tafelniveau. Hierdoor kunnen jouw queries sneller worden verwerkt.
Bekijk onze tutorial over het converteren van jouw database (tabellen) van MyISAM naar InnoDB. Als je naar Kinsta migreert en ons technische team je helpt, wijzigen we de database-engine automatisch naar InnoDB.
8. Offload Data
Zoals we eerder schreven, leden van membership sites hebben gewoon heel veel gegevens! Video’s, PDF’s, foto’s in volledige resolutie, documenten en audiobestanden zijn meestal de grootste boosdoeners. Daarom moet je misschien een manier bedenken om dit uit te besteden aan een goedkopere opslagoplossing. Dit kan je geld besparen door simpelweg je hosting pakket te upgraden. Bekijk de volgende artikelen:
- Opslag van PDF, DOCX, MP4 en MP3’s offloaden
- Hoe offload je grote bestanden naar Amazon S3
- Hoe offload je media naar Google Cloud Storage
Wat moet je Niet Doen op WordPress Membership Websites
Hier zijn een paar dingen die je niet zou moeten doen op je WordPress-membership sites.
Blijf Weg Van Bericht Counters
Voeg nooit weergave-/bericht tellers toe aan de site als je dat niet hoeft te doen. Vermijd bijvoorbeeld dingen als ‘792 berichten’ naast de avatar van een gebruiker in forumberichten of ‘5,243 weergaven’ bij het posten van forumberichten. Als je een lange discussie hebt, zullen deze tellers een grote tol eisen van je database. Vermijd in het algemeen het gebruik van tellers en gebruik deze alleen als dat echt nodig is.
Dit geldt ook voor social tellers. Merk op dat we deze wel gebruiken op de Kinsta-blog, maar nergens anders op onze site. Onze plugin heeft ook caching ingebouwd, dit zorgt ervoor dat ze geen query’s genereren bij het laden van elke pagina.
Vermijd Page Builders
Paginabouwers zijn geweldig voor veel mensen, in feite hebben we zelfs een hele lijst met degenen die je op jouw site kunt gebruiken. De meeste (niet alle) hiervan hebben echter invloed op de prestaties omdat ze extra onnodige code genereren om de pagina zo te renderen dat de gebruiker deze nog steeds kan bouwen zonder te weten hoe hij moet coderen. Als het lukt, codeer dan jouw pagina-templates maak ze altijd zo licht als mogelijk.
Onze Kinsta-website (zoals hieronder te zien) draait bijvoorbeeld op WordPress, maar het volledige thema is gecodeerd door onze eigen ontwikkelaar. Dit helpt ons om een deel van de zwakte te verminderen die grote WordPress-thema’s gewoonlijk hebben, maar stelt ons in staat nog steeds te profiteren van alle verbazingwekkende functionaliteiten. Bekijk deze verzameling als je op zoek bent naar de beste WordPress lidmaatschapsthema’s. Nogmaals, er zijn duizenden getalenteerde WordPress-ontwikkelaars en -ontwerpers beschikbaar die ter beschikking staan als je hulp nodig hebt.
Gebruik Niet Teveel Plugins
We weten dat je dit al eerder hebt gehoord. De waarheid is dat de kwaliteit van de code van een plugin belangrijker is dan het totale aantal plugins dat je hebt geïnstalleerd. Echter, met dat gezegd zijnde, zal iedere plugin nog steeds “prestatie kosten” hebben. 🐢 Als je niet langer functies van plugins gebruikt, deactiveer en verwijder ze dan van de site. Dit vereenvoudigt niet alleen het oplossen van problemen, maar zal het aantal queries op de site (zowel op de backend als op de frontend) waarschijnlijk verminderen.
Wees Voorzichtig met Externe Integraties
Er zijn veel externe CRM- en automatiseringsplatforms die je mogelijk wil integreren met jouw WordPress-membership site. Wees hier echter voorzichtig mee omdat sommige extra latency en vertragingen kunnen introduceren tijdens de communicatie met hun API’s, services, enz. Misschien wil je kijken naar oplossingen die zijn ingebouwd in WordPress, zoals deze CRM-oplossingen.
Niet om het moeilijker te maken, maar het tegenovergestelde kan ook waar zijn. Als een CRM- of automatiseringsplatform van derden veel van zijn eigen taken uitvoert, kan dit er feitelijk aan bijdragen dat jouw WordPress-host wordt ontlast. De beste manier om het zeker te weten, is door verschillende oplossingen te testen.
Overige Aanbevelingen
En natuurlijk kunnen we je niet laten gaan zonder een paar van de meer gebruikelijke snelheidsoptimalisaties te vermelden die je eigenlijk al zou moeten doen:
- Comprimeer je afbeeldingen! Bij Kinsta zien we meestal een besparing van 60-70%, afhankelijk van het type afbeeldingen en de vorm van de compressie die gebruikt wordt. Wij raden lossy-compressie aan.
- Gebruik altijd een CDN. Hoewel we bij Kinsta 20 datacenters beschikbaar hebben om uit te kiezen, is jouw server nog steeds ver weg van iemand. Een CDN kan dit oplossen door de assets (afbeeldingen, JS, CSS) naar POP’s over de hele wereld te kopiëren en te serveren. Onze Kinsta CDN is inbegrepen voor klanten.
- Denk goed na voordat je besluit je eigen VPS te beheren. Een sysadmin proberen te zijn om $20/maand te besparen, is een slecht idee.
Samenvatting
WordPress-membership en community-sites zijn absoluut een eigen categorie als het gaat om optimalisatie. Ze vereisen meestal extra inspanningen als je uitstekende prestaties wilt zien. Maar het goede nieuws is dat veel van de oplossingen die er zijn wonderen kunnen doen. PHP 8.1, Elasticsearch en Redis Object Caching zijn allemaal eenvoudige en effectieve manieren om direct resultaat te zien. En natuurlijk moet het hebben van een op prestatie gerichte hosting altijd bovenaan je lijst staan. 😉
Heb jij een WordPress-membership site? We horen graag jouw mening of problemen die je onderweg bent tegengekomen.
Laat een reactie achter