lär dig ajaxifiera dina tillägg med jquery

18
Lär dig ajaxifiera dina tillägg med jQuery Bygg ett säkert röstningstillägg med jQuery Kristian Erendi Reptilo.se

Upload: tdhftw

Post on 24-Jun-2015

340 views

Category:

Documents


4 download

DESCRIPTION

Kristian Erendis session om ajaxifiering av tillägg, som hölls på WordCamp Stockholm den 22 oktober 2012.

TRANSCRIPT

Page 1: Lär dig ajaxifiera dina tillägg med jQuery

Lär dig ajaxifiera dina tillägg med jQueryBygg ett säkert röstningstillägg med jQuery

Kristian ErendiReptilo.se

Page 2: Lär dig ajaxifiera dina tillägg med jQuery

Reptilo WordPressbyrå

• Kristian Erendi• @kaptenkrillo• [email protected]• http://www.linkedin.com/in/kristianerendi• http://reptilo.se

Page 3: Lär dig ajaxifiera dina tillägg med jQuery

Syftet med denna presentation

• Grundläggande förståelse för plugin och jQuery• Hooks• Shortcodes• Gettext – Internationalization eller i18n• Ajaxapi - webbsida• Nonce – WP rekommenderade säkerhet• jQuery

Page 4: Lär dig ajaxifiera dina tillägg med jQuery

reptilo-vote

• En liten ajax-baserad plugin• jQuery - javascript bibliotek• Prova den live på:

http://reptilo.se/reptilo-vote-plugin/

Page 5: Lär dig ajaxifiera dina tillägg med jQuery
Page 6: Lär dig ajaxifiera dina tillägg med jQuery

Hook – add_action

• Lägger till script i HTLM-headern med wp_enqueue_scripts

6

Page 7: Lär dig ajaxifiera dina tillägg med jQuery

Shortcode

Page 8: Lär dig ajaxifiera dina tillägg med jQuery

Sidan är laddad hos klienten

• Med aktuell statistik från databasen

Page 9: Lär dig ajaxifiera dina tillägg med jQuery

Ajax-API

• Ajaxanrop gör man till en publik webbsida• http://reptilo.se/wp-content/plugins/reptilo-vote/api/vote.php• Läser wp-config – så att allt i WP är tillgängligt• Returnerar data i json

OBS webbsidan manipulerar databasen, detta kräver säkerhet!

1. Stoppa sql-injection, filtrera parametrarna2. Kontrollera varifrån anropet kommer, referer3. WP-nonce

9

Page 10: Lär dig ajaxifiera dina tillägg med jQuery

WP-Nonce

Nonce:• klockslag • unik sträng • saltet i wp-config.php • giltig i 24h• 837d46052a

Skapa nonce på webbsidan innan man skickar posten wp_create_nonce(’reptilo-vote’. $post->ID);

Ta emot nonce på servern och validera den check_ajax_referer('reptilo-vote’ . $_REQUEST['postid'],

Page 11: Lär dig ajaxifiera dina tillägg med jQuery

api/vote.php - Ajax api

Page 12: Lär dig ajaxifiera dina tillägg med jQuery

Ajaxsvaret som en array i json

Page 13: Lär dig ajaxifiera dina tillägg med jQuery

jQuery-koden

Page 14: Lär dig ajaxifiera dina tillägg med jQuery

Vad jQuery-koden gör

1. Fångar klick på Ja eller Nej2. Postparametrar (Ja/nej, post_id, WP_nonce)3. Ajaxanropet4. Uppdaterar HTML (siffrorna, klickmöjlighet) 5. Byter färg med CSS

14

Page 15: Lär dig ajaxifiera dina tillägg med jQuery

Kort om klassen

• wp_postmeta tabellen för att spara data get_post_meta($this->postId,… update_post_meta($this->postId,…

• Räkna ut statistiken när den skapas! Inte när den behövs vid sidladdningen

• spara färdig statistik och data i db get_option("reptiloVoteStats"); update_option('reptiloVoteStats’…

Page 16: Lär dig ajaxifiera dina tillägg med jQuery

Internationalization – i18n

• Alla texter ska vara översättningsbara• WP använder gettext• CodeStyling Localization – plugin för överättn

Page 17: Lär dig ajaxifiera dina tillägg med jQuery

• Presentationen:http://reptilo.se/reptilo-vote-plugin/

• Plugin-koden:https://github.com/reptilo/reptilo-vote

Page 18: Lär dig ajaxifiera dina tillägg med jQuery

Frågor?Kristian [email protected]@kaptenkrillo