Genomföra EU-cookielagen till din WordPress-webbplats

Om du bor i Europa har du säkert hört talas om cookielagen. Den exakta lagen ändras från land till land och några av riktlinjerna är lite oklara hur det ska genomföras.

Denna artikel ska inte diskutera eller ge råd om lagen, men för att visa dig metoden bakom att skapa en enkel cookie law popup plugin.

Koden för det här enkla pluginet kan gå in i ditt tema functions.php fil, men jag tror att det är bättre kvar som ett plugin eftersom det inte är den typ av funktionalitet som du vill förlora mellan att ändra teman.

Funktionaliteten

Genomförandet ska vara så enkelt som möjligt. Vi ska ha en stapel över skärmens övre del som visar ett meddelande, en knapp för att avvisa meddelandet och en länk för att läsa mer om de cookies som webbplatsen använder. Vissa implementeringar går så långt som att ha en "neka" -knapp för cookies, men vi kommer inte använda det. 

Det finns många olika implementeringar av denna funktionalitet, min personliga favorit är vad Google använder:

Den enkla plugin som vi skapar under denna handledning kommer att vara bra för en utvecklare att använda på projekt men skulle behöva lite mer arbete om du ville göra det till en "one size fits all" lösning för allmänhetens användning.

Verktygen

Vi kommer att använda jQuery, PHP, HTML och CSS för det här enkla plugin-låt oss komma igång.

Först av allt måste vi skapa en ny mapp - låt oss säga kaka-pop - och inom den mappen måste vi skapa en ny PHP-fil som heter kaka-pop.php.

Det första vi behöver göra inom vår PHP-fil matas in i standardinställningsinformationen enligt WordPress Codex:

 

Än så länge är allt bra. Vi kommer att låta jQuery göra det mesta av arbetet här så mängden PHP som vi behöver använda är minimal. Vi kommer tillbaka till PHP senare i artikeln.

JavaScript

Låt oss skapa några mappar för vår JavaScript och CSS. Detta är inte nödvändigt men det hjälper till att hålla saker renare och mer organiserade, vilket aldrig är en dålig sak. Vi ringer dessa js och css.

För att fånga det som användaren har kommit överens om att kakor, måste vi ställa in en cookie som stannar meddelandet som visas vid varje besök på webbplatsen. För detta kommer vi att använda ett mycket populärt jQuery-plugin. Ta tag i plugin från GitHub och släpp den jquery.cookie.js filen i din js mapp. Vi vill också ha en fil att släppa vår anpassade jQuery för plugin in, så skapa en ny fil i js mapp som heter kaka-pop.js.

Du kommer märka att jag har använt unminified JavaScript här - det är alltid en bra idé att inkludera en minifierad version av JavaScript tillsammans med den ursprungliga, linted versionen, speciellt om du vill släppa det här som en offentligt tillgänglig plugin. 

Minifiering och sammankoppling är ämnen för ett annat inlägg, men för de som är intresserade kan du kolla in CodeKit, Grunt och Gulp. För att läsa mer om minifiering, ta en titt på några av dessa andra bra Tuts + handledning:

  • Ändra JavaScript Minifiering
  • Hantera dina bygguppgifter med Gulp.js
  • Möt Grunt, Byggverktyget för JavaScript

Öppna nu ditt tomma kaka-pop.js fil och ange följande kod:


/ * global cookie_pop_text * / (funktion ($) 'använd sträng'; om ('set'! == $ .cookie ('cookie pop')) $ ('body') .prepend
Genom att använda vår hemsida godkänner du användningen av våra cookies. Läs mer…
'); $ ('# accept-cookie') .click (funktion () $ .cookie ('cookie-pop', 'set'); $ ('.cookie-pop') .remove ();); (jQuery));

Den här jQuery-metoden ska utföras inom document.ready. Att använda jQuery med WordPress är lite annorlunda än att använda biblioteket på egen hand.

 Som standard använder WordPress jQuery i kompatibilitetsläge vilket betyder istället för att använda $ symbol, du måste skriva jQuery. Lyckligtvis finns det några sätt att komma runt om problemet - i exemplet ovan har vi passerat i $ så det kan användas inom våra funktioner.

Det går ganska lite i den här koden, så vi kan bryta ner det lite. Det första vi gör här är att kontrollera om det finns en cookie som heter kaka-pop och att det inte har värde av uppsättning genom att använda kaka metod (som tillhör skriptet jQuery Cookie, förklaras mer här). 

Om kakan redan har ställts in behöver vi inte göra något eftersom användaren redan har sett meddelandet och tryckt på knappen. Om det inte har det värdet så förbereder vi oss av HTML-dokumentet med en

som har en klass av .kaka-pop. De div vi har skapat har a '+ cookie_pop_text.more +'
');

Det sista vi behöver göra är att berätta för WordPress att faktiskt använda dessa filer - för det här använder vi wp_enqueue_script () metod:

wp_enqueue_script ('cookie-pop-script');

Du kommer märka att jag bara har kalkylerat cookie pop-script skript här - det är här dessa beredskapsdeklarationer kommer att spela när vi registrerade våra skript. WordPress kommer automatiskt att förutse alla beroenden.

Nästa upp, CSS. Det fungerar på ungefär samma sätt som JavaScript:

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

Det sista att göra är att sätta allt ihop i vårt cookie_pop_scripts_and_styles () funktionen och haka den till wp_enqueue_scripts åtgärd, så det kompletta paketet ser ut så här:

funktion 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' => __ ('Genom att använda vår hemsida accepterar du användningen av våra cookies.', 'cookie pop' => __ ('OK', 'cookie-pop'), 'more' => __ ('Läs 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');

Sammanfatta det

Nu har vi ett arbetsplugin med ett enkelt meddelande och en knapp för att klicka som kommer att rensa meddelandet och få det inte att dyka upp igen under en viss tid. 

Exemplet jag använde här är för EU-cookielagen, men i verkligheten kan den här typen av funktionalitet vara till nytta för alla sorters saker i WordPress som att visa avbrutna leveranstider på jul i en e-handelsbutik. 

Implementeringen här är väldigt enkel och kräver lite manuell redigering för länken "Läs mer" - det här kan enkelt utökas med hjälp av API: ns API-alternativ.