Gjennomføring av EUs Cookie Law i ditt WordPress Site

Hvis du bor i Europa, har du sikkert hørt om cookie loven. Den eksakte loven endres fra land til land, og noen av retningslinjene er litt uklare om måter den skal implementeres på.

Denne artikkelen skal ikke diskutere eller gi råd om loven, men for å vise deg metoden bak å lage en enkel cookie law popup plugin.

Koden for denne enkle plugin kan gå i temaet ditt functions.php fil, men jeg tror det er bedre igjen som et plugin, da det ikke er den typen funksjonalitet du vil miste mellom skiftende temaer.

Funksjonaliteten

Gjennomføringen skal være så enkel som mulig. Vi skal ha en linje over toppen av skjermen som viser en melding, en knapp for å avvise meldingen, og en link for å lese mer om informasjonskapslene nettstedet bruker. Noen implementeringer går så langt som å ha en "nekte" -knapp for informasjonskapsler, men vi vil ikke bruke det. 

Det er mange forskjellige implementeringer av denne funksjonaliteten, min personlige favoritt er hva Google bruker:

Den enkle plugin-modulen vi lager under denne opplæringen vil være bra for en utvikler å bruke på prosjekter, men vil trenge litt mer arbeid hvis du ønsker å gjøre det til en "one size fits all" løsning for allmenn bruk.

Verktøyene

Vi skal bruke jQuery, PHP, HTML og CSS for dette enkle plugin-la oss komme i gang.

Først av alt må vi lage en ny mappe - la oss si cookie-pop - og i den mappen må vi lage en ny PHP-fil kalt cookie-pop.php.

Det første vi må gjøre i vår PHP-fil, legges inn i standard plugin-informasjonen som instruert av WordPress Codex:

 

Så langt så bra. Vi skal la jQuery gjøre det meste av arbeidet her, så mengden av PHP vi trenger å bruke er minimal. Vi kommer tilbake til PHP senere i artikkelen.

JavaScript

La oss lage noen mapper for JavaScript og CSS. Dette er ikke viktig, men det bidrar til å holde ting renere og mer organisert, noe som aldri er en dårlig ting. Vi ringer disse js og css.

For å fange opp at brukeren har avtalt å cookies, må vi sette inn en informasjonskapsel som stopper meldingen som vises på hvert besøk til nettstedet. For dette skal vi bruke et veldig populært jQuery-plugin. Ta tak i pluginet fra GitHub og slipp jquery.cookie.js filen i din js mappe. Vi vil også ha en fil å slippe vår tilpassede jQuery for plugin i, så opprett en ny fil i js mappe kalt cookie-pop.js.

Du vil legge merke til at jeg har brukt unminified JavaScript her - det er alltid en god ide å inkludere en minifisert versjon av JavaScript sammen med den opprinnelige, linted-versjonen, spesielt hvis du vil slippe dette som en offentlig tilgjengelig plugin. 

Minifisering og sammenkobling er emner for et annet innlegg, men for de som er interessert, kan du sjekke ut CodeKit, Grunt og Gulp. For å lese mer om minifisering, ta en titt på noen av disse andre flotte Tuts + opplæringene:

  • Revisiting JavaScript Minification
  • Administrere dine byggeoppgaver med Gulp.js
  • Møt Grunt, Byggverktøyet for JavaScript

Åpne nå tomt cookie-pop.js fil og legg inn koden nedenfor:


/ * global cookie_pop_text * / (funksjon ($) 'bruk streng'; hvis ('set'! == $ .cookie ('cookie pop')) $ ('body') .prepend
Ved å bruke nettstedet vårt, godtar du bruken av våre cookies. Les mer…
'); $ ('# accept-cookie') .click (funksjon () $ .cookie ('cookie-pop', 'set'); $ ('.cookie-pop') .remove ();); (jQuery));

Denne jQuery-metoden bør utføres innenfor document.ready. Bruke jQuery med WordPress er litt annerledes enn å bruke biblioteket på egenhånd.

 Som standard bruker WordPress jQuery i kompatibilitetsmodus, som betyr i stedet for å bruke $ symbol, må du skrive jQuery. Heldigvis er det noen måter å komme seg rundt på dette problemet - i eksempelet ovenfor har vi passert i $ slik at den kan brukes i våre funksjoner.

Det går ganske mye i denne koden, så vi kan bryte det litt ned. Det første vi gjør her, er å sjekke om det heter en kake cookie-pop og at den ikke har verdi av sett ved å bruke cookie metode (som tilhører jQuery Cookie-skriptet, nærmere forklart her). 

Hvis cookien allerede er satt, trenger vi ikke å gjøre noe, siden brukeren allerede har sett meldingen og trykket på knappen. Hvis den ikke har den verdien, så forbereder vi den av HTML-dokumentet med en

som har en klasse av .cookie-pop. De div vi har opprettet har a '+ cookie_pop_text.more +'
');

Det siste vi må gjøre er å fortelle WordPress å faktisk bruke disse filene - for dette bruker vi wp_enqueue_script () metode:

wp_enqueue_script ('cookie-pop-script');

Du vil legge merke til at jeg bare har mottatt cookie-pop-script Skript her - dette er her disse avhengighetserklæringene kommer inn for å spille når vi registrerte våre skript. WordPress vil automatisk benytte alle avhengigheter.

Neste opp, CSS. Dette fungerer på omtrent samme måte som JavaScript:

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

Den siste tingen å gjøre er å sette alt sammen i vår cookie_pop_scripts_and_styles () funksjonen og koble den til wp_enqueue_scripts handling, slik at hele pakken ser slik ut:

funksjon 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', sant); wp_localize_script ('cookie pop popup script', 'cookie_pop_text', array ('message' => __ ('Ved å bruke nettstedet vårt, godtar du bruk av våre cookies.', 'cookie pop'), 'button' => __ ('OK', 'cookie-pop'), 'more' => __ ('Les mer ...', 'cookie-pop'))); wp_enqueue_script ('cookie-pop-script'); wp_enqueue_style ('cookie-pop-style', plugins_url ('/css/cookie-pop.css', __FILE__), array (), '1.0.0');  add_action ('wp_enqueue_scripts', 'cookie_pop_scripts_and_styles');

Oppsummering

Nå har vi en arbeidsplugin med en enkel melding og en knapp for å klikke som vil fjerne meldingen og få den ikke til å dukke opp igjen i en angitt tid. 

Eksempelet jeg brukte her, er for EU-informasjonskapsloven, men i virkeligheten kan denne typen funksjonalitet være nyttig for alle slags ting i WordPress, som for eksempel å avkjøre leveringstidene til jul i en e-handelsbutikk. 

Implementeringen her er veldig enkel og krever litt manuell redigering for "read more" -linken - dette kan enkelt utvides ved bruk av WordPress-opsjons API.