Implementatie van de EU-cookiewet in uw WordPress-site

Als je in Europa woont, heb je waarschijnlijk wel eens gehoord van de cookiewet. De exacte wet verandert van land tot land en sommige richtlijnen zijn een beetje onduidelijk over de manier waarop het moet worden geïmplementeerd.

Dit artikel is niet bedoeld om de wet te bespreken of te adviseren, maar om u de methode te laten zien achter het maken van een eenvoudige pop-upplugin voor cookiewetgeving.

De code voor deze eenvoudige plug-in kan gaan in uw thema's functions.php bestand, maar ik denk dat het beter kan worden overgelaten als een plug-in, omdat het niet het soort functionaliteit is dat je wilt verliezen tussen wisselende thema's.

De functionaliteit

De implementatie zal zo eenvoudig mogelijk zijn. We gaan een balk aan de bovenkant van het scherm plaatsen met een bericht, een knop om het bericht te sluiten en een link om meer te lezen over de cookies die de site gebruikt. Sommige implementaties gaan zelfs zo ver als het hebben van een 'ontkenneknop' voor cookies, maar we zullen dat niet gebruiken. 

Er zijn veel verschillende implementaties van deze functionaliteit, mijn persoonlijke favoriet is wat Google gebruikt:

De eenvoudige plug-in die we tijdens deze tutorial maken, is geweldig voor een ontwikkelaar om projecten te gebruiken, maar zou wat meer werk nodig hebben als je er een "one size fits all" -oplossing voor algemeen openbaar gebruik van wilde maken..

Het gereedschap

We gaan jQuery, PHP, HTML en CSS gebruiken voor deze eenvoudige plug-in - laten we aan de slag gaan.

Allereerst moeten we een nieuwe map maken, laten we zeggen koekje-pop - en binnen die map moeten we een nieuw PHP-bestand maken met de naam koekje-pop.php.

Het eerste dat we moeten doen binnen ons PHP-bestand is de standaard plugin-informatie in te voeren zoals aangegeven door de WordPress Codex:

 

Tot nu toe, zo goed. We laten jQuery het meeste werk hier doen, dus de hoeveelheid PHP die we moeten gebruiken is minimaal. We komen later in het artikel terug naar de PHP.

JavaScript

Laten we een aantal mappen maken voor onze JavaScript en CSS. Dit is niet essentieel, maar het helpt wel om het schoner en georganiseerder te houden, wat nooit erg is. We zullen dit noemen js en css.

Om vast te leggen dat de gebruiker akkoord is gegaan met cookies, moeten we een cookie instellen die voorkomt dat het bericht bij elk sitebezoek verschijnt. Hiervoor gaan we een zeer populaire jQuery-plug-in gebruiken. Pak de plug-in in GitHub en laat de jquery.cookie.js bestand in uw js map. We willen ook dat een bestand onze aangepaste jQuery laat vallen voor de plug-in, dus maak een nieuw bestand aan in de js map genoemd koekje-pop.js.

U zult merken dat ik hier niet-geminimaliseerd JavaScript heb gebruikt - het is altijd een goed idee om een ​​geminimaliseerde versie van uw JavaScript samen met de originele, pluizige versie op te nemen, vooral als u dit als een openbare plug-in zou willen vrijgeven. 

Minificatie en concatenatie zijn onderwerpen voor een andere post, maar voor geïnteresseerden kun je CodeKit, Grunt en Gulp bekijken. Om meer over verkleinen te lezen, bekijk eens enkele van deze andere geweldige Tuts + tutorials:

  • JavaScript-minificatie opnieuw bekijken
  • Uw bouwtaken beheren met Gulp.js
  • Meet Grunt, The Build Tool voor JavaScript

Open nu je blanco koekje-pop.js bestand en plaats de onderstaande code:


/ * global cookie_pop_text * / (functie ($) 'gebruik strict'; if ('set'! == $ .cookie ('cookie-pop')) $ ('body') .prepend ('
Door onze website te gebruiken, gaat u akkoord met het gebruik van onze cookies. Lees verder…
'); $ ('# accept-cookie') .klik (functie () $ .cookie ('cookie-pop', 'set'); $ ('.cookie-pop') .remove ();); (jQuery));

Deze jQuery-methode moet binnen worden uitgevoerd document.ready. Het gebruik van jQuery met WordPress verschilt enigszins van het gebruik van de eigen bibliotheek.

 WordPress gebruikt standaard jQuery in de compatibiliteitsmodus wat betekent dat in plaats van het gebruik van de $ symbool, je moet jQuery typen. Gelukkig zijn er een paar manieren om dit probleem te omzeilen - in het bovenstaande voorbeeld zijn we geslaagd in de $ dus het kan binnen onze functies worden gebruikt.

Er is nogal wat gaande in deze code, dus laten we het een beetje afbreken. Het eerste wat we hier doen is controleren of er een cookie is gebeld koekje-pop en dat het geen waarde heeft van reeks door de koekje methode (die bij het jQuery Cookie-script hoort, wordt hier verder uitgelegd). 

Als de cookie al is ingesteld, hoeven we niets te doen omdat de gebruiker het bericht al heeft gezien en op de knop heeft gedrukt. Als het die waarde niet heeft, zijn we de van het HTML-document met een

dat heeft een klasse van .koekje-pop. De div we hebben gemaakt heeft een '+ cookie_pop_text.more +'
');

Het laatste dat we moeten doen is WordPress vertellen om deze bestanden daadwerkelijk te gebruiken - hiervoor gebruiken we de wp_enqueue_script () methode:

wp_enqueue_script ('cookie-pop-script');

U zult opmerken dat ik het alleen in de wacht heb gezet koekje-pop-script script hier - hier komen die afhankelijkheidsverklaringen binnen om te spelen toen we onze scripts registreerden. WordPress zal automatisch alle afhankelijkheden in wachtrij plaatsen.

Vervolgens de CSS. Dit werkt op vrijwel dezelfde manier als JavaScript:

wp_enqueue_style ('cookie-pop-stijl', plugins_url ('/css/cookie-pop.css', __FILE__), array (), '1.0.0');

Het laatste wat je moet doen, is om dit alles samen te voegen in onze cookie_pop_scripts_and_styles () functie en haak het aan de wp_enqueue_scripts actie, dus het complete pakket ziet er als volgt uit:

function cookie_pop_scripts_and_styles () wp_enqueue_script ('jQuery-cookie', plugins_url ('/lib/jquery.cookie.js', __FILE__), array ('jquery'), '1.4.1', true); wp_register_script ('cookie-pop-script', plugins_url ('/js/cookie-pop.js', __FILE__), array ('jQuery', 'jQuery-cookie'), '1.0.0', true); wp_localize_script ('cookie-pop-script', 'cookie_pop_text', array ('message' => __ ('Door onze website te gebruiken, gaat u akkoord met het gebruik van onze cookies.', 'cookie-pop'), 'button' => __ ('OK', 'cookie-pop'), 'more' => __ ('Lees meer ...', 'cookie-pop'))); wp_enqueue_script ('cookie-pop-script'); wp_enqueue_style ('cookie-pop-stijl', plugins_url ('/css/cookie-pop.css', __FILE__), array (), '1.0.0');  add_action ('wp_enqueue_scripts', 'cookie_pop_scripts_and_styles');

Samenvattend

Nu hebben we een werkende plug-in met een eenvoudig bericht en een knop om te klikken, waardoor het bericht wordt gewist en het niet weer verschijnt gedurende een bepaalde tijd. 

Het voorbeeld dat ik hier gebruikte, is voor de EU-cookiewet, maar in werkelijkheid kan dit soort functionaliteit nuttig zijn voor allerlei dingen in WordPress, zoals het afleveren van bezorgtijden met Kerstmis in een eCommerce-winkel. 

De implementatie is hier heel eenvoudig en vereist enige handmatige bewerking voor de koppeling "lees meer" - dit kan eenvoudig worden uitgebreid met de API voor WordPress-opties.