Det kunde bara varit bättre gp+

I dagarna släpper gp.se sin betaltjänst gp+ och vill man få framgång med den måste folk registrera sig via deras sajt. Själva formuläret för registrering blir därmed extremt viktigt, jag faktiskt helt helt avgörande för hur många som kommer ansluta sig.

Få saker inom webbdesign är så diskuterade som just registreringsformulär och en sökning på Google ger snabbt intressant läsning, till exempel Web form design guidelines: an eyetracking study där man utgår från en studie med ögonrörelser eller Web Form Design Patterns: Sign-Up Forms som har undersökt hur de stora drakarna bygger sina formulär. Bara att läsa och lära.

Hur har man lyckats på gp.se?

Först några inledande funderingar. För att komma till formuläret behöver man klicka på en knapp ”Registrering”. Här kan man såklart fundera på ordvalet; ”bli medlem” eller ”börja här” kunde varit klart mer inbjudande. Kanske petigt men att inleda en relation med gp.se via ”registrering” är nog inte att sprida kärlek.

Vad värre är får man ingen information om vad man faktiskt får genom att registrera sig? Den informationen finns men inte på formulärsida vilket är märkligt. Sidan bjuder inte på något annat än just ett formulär, så vad är det jag registrerar mig för? Vad händer sedan? Kostar det mig något osv?

En annan sak är att det står ”Bli GP+ medlem” som rubrik på formuläret”. På länken som leder mig till formuläret står det ”Registrera dig”. Har jag kommit fel?

Därefter får man välja om man är man/kvinna eller förening, känns som ett arv från ett illa designat backend, sånt ska inte förekomma.

Totalt räknar jag till 18 fält och val man ska ta ställning till varav nio är tvingande. Allehanda personuppgifter och därefter ombeds man att uppge ”Kundnummer”. Detta är inte obligatoriskt men för den som faktiskt har ett kundnummer antar jag att det mesta i formuläret är överflödigt. Har jag kundnummer så har väl gp.se mitt namn? En variant vore att dela upp i olika flöden, har du kundnummer ange det här, eller fyll i formuläret för få ett kundnummer.

Det är bra att gruppera långa formulär, vilket man också gjort, men man ska då sätta rubriker på grupperna, och varför är förresten ”födelsedatum” en egen grupp?

Vidare ska jag fylla i lösenord och lösenordets kvalitet bedöms som dålig/bra (borde varit låg/hög antar jag). Då kvaliteten mäts spricker sidan i sidled, troligen en bugg.

Jag klickar på knappen ”Bli GP+ medlem”, dvs ytterligare en variant av kommunikation. Borde i ärlighetens namn varit ”Registrera nu” eftersom det är så det står på länken till formuläret.

Felhanteringen är intressant då man ibland visar felmeddelanden över och ibland under fälten där felen finns, klart förvirrande. En smått komiskt detalj är att datumfältet returnerar ”Var vänlig ange ett giltigt datum i formatet ÅÅÅÅ-MM-DD” som felmeddelande, hur i herrans namn kan jag fylla i ett annat format? Det är ett select-fält.

Nog med gnäll, nu tittar vi på hur det kunde sett ut istället. Det går ju självklart att bygga betaltjänster och samtidigt skapa en liten vacker registreringar, se till exempel på Tumblr.com där man ska registrera sig, de nöjer sig med tre fält.

Eller varför inte titta på NyTimes.com, en tidning som varit tidigt ute och hunnit testa lite olika betaltjänster. Deras registrering består av tre fält även den, vilket känns klart mer inbjudande.

I ärlighetens namn, hur tänker man när man smackar upp 19 fält, varav en del felaktiga och tror att folk ska orka registrera sig och sedan älska tjänsten? Om man nu vill göra ett ordentligt försök att ta betalt för sitt innehåll behöver man inleda det med en betydligt bättre första kundkontakt än detta, det är ju som sagt bara att google lite.

Så skalar Sydsvenskan.se sina bilder – till hur många som helst

Bildhantering på webben är en utmaning. Man vill och ena sidan kunna använda en bild i valfritt antal format, och andra sidan vill man skapa så få varianter som möjligt.

Ingen vill fylla sin mediaserver med massa bildversioner som ingen använder, men ingen vill heller vara begränsad i hur man kan använda sina bilder. Man vill till exempel enkelt kunna skala om till iPad eller mobilt, så hur gör man då?

Vår lösning för sds-koncernen är enkelt men briljant och den fungerar ungefär såhär:

Vi beslutade helt enkelt att alla bilder ska beskäras automatiskt till det format en viss placering/puff kräver. En nyhets-sajt är väldigt mallad och har en hel del automatiska flöden så det borde fungera bra tänkte vi.

För att bättra på oddsen för att den beskurna bilden ska fungera bra utgår vi från ett 16:9-tänk. I de flesta lägen skalas bilderna helt enkelt proportionerligt, men vi kan även skala helt fritt. Gissningsvis korrigeras runt fem procent av bilderna manuellt.

Rent tekniskt fungerar det så att vi i samtliga puffar och bildplaceringar lägger en referens till originalbilden. Denna adresseras till en ruby-app som i sin tur ligger i molnet (Heroku). Vi skickar med önskad höjd/bredd. Bilderna skalas i realtid till önskade mått och landar sedan hos Akamai för cachning.

95 procent av alla bilder skalas alltså helt automatiskt och användarna inte klagat på illa beskärda bilder, eller ens noterat förändringen från tiden då allt gjordes helt manuellt. Vi ser inte någon trafikförändring nedåt på grund av eventuellt sämre beskärda bilder. Snarare ser vi en trafikökning, då redaktörer nu kan lägg mer kraft på att jaga nyheter, och mindre tid på att sitta i Photoshop.

För mig som frontutvecklare har livet blivit betydligt enklare då jag slipper ta hänsyn till vilka bildformat som finns tillgängliga, alla finns.

Så, nu har redaktörerna fritt antal varianter på samtliga bilder, och det enda vi behöver göra är att hosta originalbilden och Vi pratar under hundra rader kod som Peo och Mats här i huset har fått ihop för att lösa detta.

Läsning: 100 snippets och css-selektorer

Status

Ruggigt bra om css-pseudoklasser. De börjar på allvar bli nyttiga nu när explorer 9 är släppt. Lova att sluta koda för ie 7 nu.
http://css-tricks.com/pseudo-class-selectors/

Vilka css-selektorer fungerar i vilka webbläsare, är ganska bra att ha koll på, men kanske måste inte allt fungera överallt för att man ska våga använda det.
http://kimblim.dk/css-tests/selectors/

100 wp-snippets, många klart bra och inspirerande
http://wpmu.org/shun-the-plugin-100-wordpress-code-snippets-from-across-the-net/

Vart tar dagstidningarnas design på webben vägen? Läs och begrunda.
http://www.vostok.es/blog/online-newspaper-design-expired-vs-modern

Gör egna screencast väldigt enkelt, bara att logga in och köra
http://www.screenr.com/ är skitbra

Plugin: Content Sort screencast

Status

Jag har äntligen uppdaterat Content Sort till 2.0b, pluginen som gör att man kan sortera förstasidan på en wordpress-sajt.  Förutom optimering är nu all data flyttad från den egna tabellen till  options-tabellen. Dessutom körs de monterade posterna nu direkt in i ”the_loop” istället för i en helt egen variant. Det gör att Content Sort fungerar utan template-hack, vilket blir klart enklare.

Plugin: Related-Images 1.1 med bildtext och bildmått

Har lagt ut en liten men nyttig uppdatering av Related-Images. Man kan numera få ut den genererade bildens höjd och bredd samt beskrivning och caption. De senare två kan användas för att sätta egna bildtexter. Tyvärr sitter bildtexter direkt på bilden i WordPress, vilket gör att alla placeringar av samma bild får samma bildtext. En annan lite skum grej är att WP-Super-cache inte verkar släppa cachen då man uppdaterar media, en ändring i en bildtext kan därmed släpa lite.

Plugin: Relatera bilder till en post på ett bra sätt

Bildhanteringen i WordPress lämnar en del övrigt att önska. Den är förvisso väldigt smidig och klart förbättrad på senare tid men ibland vill man helt enkelt inte ha alla bilder mitt i sina poster.

För den som vill lägga en bild över rubriken blir det lite trixande och samma trixande blir det om man vill göra en så enkel grej som att använda en bild till förstasidan och en annan bild till artikelsidan.

Efter att ha irriterat mig lite på detta har jag helt enkelt gjort en plugin som fixar det hela. Det brukar ju vara den enklaste lösningen.

Allt är väldigt enkelt. Ladda hem Related Images, lägg i plugin-mappen och aktivera. På sidan där du skriver en post finns nu en låda med ett sökfält . Där söker du bland bilderna i ditt media-arkiv och då du hittar en bild väljer du position, och sparar.

För att få ut bilden på sidan använder du en template tag. Den behöver ligga innanför the_loop och fyra parametrar finns tillgängliga.

Första parametern är positionen och i version 1.0 finns det fyra olika placeringar att välja bland, andra är bildens maxbredd och tredje är bildens maxhöjd. En fjärde parameter kan skickas med och det är en css-klass som då läggs på bilden.

related_image('left_firstpage', '200', '200');
related_image('right_firstpage', '200', '200');
related_image('top_firstpage', '500', '200');
related_image('top_article_firstpage', '500', '200');

Sådär,  nu kan du placera template-taggen och därmed bilderna helt fritt och utanför själva posten. Självklar kan man fortfarande använda traditionella inlinebilder i kombination med de relaterade.

Redesign på en timme – gp.se

Redesign är ofta tidskrävande och stora projekt. Så idag testade jag att klippa och klistra i gp.se under ganska exakt en timme, och resultatet ser ni här. Problem: Obalanserad, lite märkligt typograferad och en hel del känns lite slarvigt. Lösning: En stor bild för för bättre känsla för ”stort/smått”, utfallande, korrigerat fonter och radavstånd, nu tar jag en kaffe.

Ett ovanligt kul kalenderprojekt

SDS-koncernen har tagit första steget för att implementera sitt nya kalenderbygge som körs på WordPress. Wp är kanske mest känt som bloggplattform men fungerar, som jag tidigare varit inne på, alldeles utmärkt även som ramverk för att bygga helt andra typer av webbapplikationer. En av fördelarna är att man i WordPress får ett välkänt och omtyckt backend som även erbjuder ett starkt API.

Tanken var att bygga en central kalender där all data låg på ett och samma ställe för att man sedan skulle kunna skapa fristående ”frontar” som kunde pressentera kalenderhändelser. Dessa frontar skulle kunna ha olika utseende, olika innehåll och svara på olika domäner. Sydsvenskan.se skulle ha sig egen front, och Ystadsallehanda sin osv. Inmatningen skulle ske från flera olika redaktioner och även externt.

De olika tidningarna kommer att ha varsin mer permanent kalender och enkelt kunna sätt upp tillfälliga vid behov (tex Konstrundan-kalendern) dessutom ville man ha en export av kalenderdata från WordPress direkt till tidningssidan som ligger i InDesign. Slutligen ville man ha ett API för att på ett enkelt sätt kunna koppla på externa aktörer samt enkelt bygga formulär för att låta användarna kunna mata in egna händelser.

Lösningen blev att installera en nätverksversion av wp, låta rootbloggen hålla i all kalenderdata och därefter låta front-bloggarna kunna hämta ut data ur rootbloggen och lista ut. Inte helt standard men det fungerar kalas, inte minst tack vare <?php switch_to_blog($new_blog) ?> som gör jobbet bra.

En egen post_type blev grunden för en händelse och till den kopplades sedan kategorier och taggar. Metadata hamnade där den brukar hamna (på vant wp-vis) men i de fall vi behövde göra extremt snabba uppslag lagrades metadata istället i en egen index-tabell. Ett index från GSA eller Sorl hade säkert fungerat lika bra.

Alla sajter i kalender-installation delar alltså på ett antal tabeller, taggar, kategorier osv. Därefter kan redaktören konfigurera vilka områden (kommuner) som ska vara tillgänglig via en given front, välja ett tema och köra ut en kalender. Exporter till InDesign tas ut på liknande sätt och kan skickas direkt in på de olika tidningarnas pappers-sidor.

Wp sköter hela backend som är ganska default förutom någon extra tabell. Utlistningen av händelser i fronten fick dock byggas om rejält då gamla fina ”the_loop” har dåligt stöd för att hämta data från en annan sajt än den man befinner sig på. För att få upp anständiga svarstider från den egna index-tabellen har vi lagt ett memecached-lager ovanpå alltihop, och allra längst ut tar Akamai hand om eventuella trafiktoppar.

http://kalender.kristianstadsbladet.se är först ut.

Kort: Mediavärlden gör som jag

Status

Men vad trevligt att Mediavärlden gör som jag gjorde i veckan. Dvs, lägger upp ettor och ser hur de olika sajterna hanterar sin front för en viss nyhetshändelse. Denna gång handlar det om Jordbävningen i Japan och läser man kommentarerna vinner Sydsvenskan kampen även denna gång, fy va kul! Följ länken så ser du hur det ser ut.

WordPress som ramverk för webbappar – det blir riktigt spännande framöver

WordPress är en blogg-plattform och det är som en sådan den har vuxit och blivit otroligt stor och populär. Det var även via bloggar som jag själv hittade till WordPress, men på senare tid har jag börjat se wp i ett nytt ljus.

Dels som ett cms för att bygga helt andra typer av sajter men även som ett ramverk för att bygga webbappar och api:er till andra appar. I de lägen då man behöver en inloggning och kunna spara lite data blir wp ett riktigt bra alternativ. Tänk dig backoffice till en kundservice, ett supportsystem eller hantering av nyhetsbrev osv.

Lite förenklat kan man säga att ett ramverk behöver innehålla ungefär följande funktioner för att kunna kallas just ramverk, eller i alla fall för att kunna tjänstgöra som ett ramverk.

  1. Säkerhet, inloggning och någon form av behörighetssystem
  2. Lager för en enkel koppling mot en databas
  3. Url-hantering, routing
  4. Mallar, templates
  5. Cachehantering, objectcachning, frontcachning
  6. Konfig för dev/test/stage/prod/
  7. Felhantering, loggning
  8. Ajax och ok säkerhet kring ajaxrequests

Helt säkert finns det fler saker man kan önska sig men med detta i bagaget så går det bygga en hel del webappar. Hur står sig då WordPress i förhållande till listan?

  1. Säkerhet, inloggning och någon form av behörighetssystem
    Inloggning och användarhantering finns samt en enkel men robust behörighetslösning, framförallt kan jag sakna möjlighet att kunna styra rättigheter till pluginer på ett bättre sätt. Nu är det lite ”av eller på” -princien som gäller.
  2. Lager för en enkel koppling mot en databas
    Ja, det finns ju där, metoderna i $wpdb är verkligt bra och enkla att använda
  3. Url-hantering, routing
    Länkar kan man mappa ganska fritt under ”permalänkar” eller helt skriva om via rewrite-api:et
  4. Mallar, templates
    Finns och är verkligt bra, hade varit bra att kunna välja mallar på lägra nivå exempelvis på puffar och mindre ytor än ”sidor”.
  5. Cachehantering, objectcachning, frontcachning
    Man saknar stabil native-implementation av tex. memcache för objecten men wp supercache gör frontcachejobbet väldigt bra och wp_cache finns där att använda.
  6. Konfig för dev/test/stage/prod/
    Här finns en svaghet, man får göra en specialare för att enkelt kunna deploya sin kod mellan olika miljöer eller jobba i ett större team. Tex Rails är föredömligt bra på den punkten.
  7. Felhantering, loggning
    Finns och är bra.
  8. Ajax och ok säkerhet kring ajaxrequests
    Finns och är bra, när man väl kommit in i det.

Fördelar med att använda WordPress som ramwerk

Själva poängen med att använda ett ramverk är bland annat att man kan korta utvecklingstiden, att kvaliteten blir högre, att säkerheten för den slutgiltiga webbappen blir högre.Jag tycker man kan se alla alla dessa vinster finns, och några till. Man få till exempel enkla uppgraderingar till nya versioner och väldigt enkel installation. Man får ett bra backend med genomtänkt gui som framtida användare kan känna sig trygga med.

Jag tycker mig också kunna se att de senaste versionerna av WordPress inte bara handlar om bloggande utan om att bredda användandet av WordPress, just till en plattform för webbappar.

Givetvis finns det brister, till exempel hantering av bilder, rättigheter och att arkitekturen inbjuder till viss rörighet är exempel på det men för ”rätt” projekt är WordPress är tänkbart alternativ.

Läsning: Konfa wp för flera miljöer och säkerhet

Fredagsläsningen denna vecka blir ett antal länkar till inspiration, konfning (kärt ämne) och säkerhet.

TV om inspirerande om olika sätt att närma sig ett tema-design-arbete på. Kanske passa detta inte alla men det finns bra saker att snappa upp.
http://wordpress.tv/2011/02/07/jeff-milone-david-morgan-approaching-theme-design/

Säkerhet är viktigt och detta om hur man bör hantera sin chmod på filer är bra och viktigt att hålla koll på. Alltså:  Massa bra om rättigheter på filer, något man sällan tänker på tyvärr
http://codex.wordpress.org/Changing_File_Permissions

OM du ska nördblogga och klippa in kod i dina poster är en vettig highlighter ett absolut måste, för wp finns bland annat denna.
http://www.viper007bond.com/wordpress-plugins/syntaxhighlighter/

En enkel plugin som kort och gott visar alla tillgängliga gui:element i ett wp-backen, alltid bra att ha till hands.
http://wordpress.org/extend/plugins/wordpress-admin-ui-reference-guide/

WordPress är inte den plattform i världen som är bäst förberedd på att köras på flera olika miljöer som dev, test, stag osv. Detta är dock ett sätt man kan lösa problemet på. Så konfar du för multimiljöer dvs.
http://viastudio.com/2011/02/08/configuring-wordpress-multiple-environments/

Plugin: Drop Zone uppdaterad till ver 1.3

Drop Zone är en plugin som skapar ”droppbara” ytor på en WordPress-sajt. På dessa ytor kan man sedan dra och släppa vanliga wp-poster som ”fastnar” och skapar puffar (ursäkta tidnings-språket) med rubrik, valbar ingress och tumnagel. Nytt i version 1.3 är stöd för wp-super-cache, uppstädning av JavaScript:en (tack Peo Bondesson) samt att ”before_title” och ”after_title” nu stödjs fullt ut.

Laddar hem det gör du enklast här direkt från WordPress.org.

För att kunna köra Drop Zone behövs php5 och en modern webbläsare eftersom pluginen använder html5 native drag/drop. Installerar gör du som vanligt, lägg drop-zone-mappen direkt i wp-content/plugins/ och aktivera.

Därefter drar du ut valfritt antal ytor under ”Utseende/Widgets” i ditt backend, som i sin tur skapar de droppbara ytorna på din sajts frontend, och droppa poster kan den som är inloggad göra. Här finns en lite mer utförlig förklaring.

Behöver jag säga att detta är den bästa versionen någonsin?

En match och fyra olika webb-ettor

Man kan säga vad man vill om själva matchen, men kampen om  utgörningen på sin sajt vinner Sydsvenskan.se ganska enkelt, titta bara här.


Sydsvenskans etta är väldigt balanserad och bilden arbetar på egen hand. En jublande Messi personifierar hela känslan, bra jobb, enkelt och vackert. De övriga kör en mer traditionell design och häller in allt innehåll uppifrån och ner.

Varför kör inga Svenska dagstidningar på WordPress?

Jag arbetar sedan 10-15 år inom tidningsvärlden och kan inte låta bli att förundras över  att så få tidningshus har valt att gå över till WordPress. Då menar jag inte bloggarna utan hela sina sajter, för att köra WordPress fullt ut.

Som jag ser det finns hela grundstommen av funktioner på plats, och man får som  bekant fördelen av att tillhöra världens största utvecklar-community, en helt öppen plattform, enkel drift i molnet och inte minst ett system som väldigt många kan och tycker bra om. Det faktum att många riktigt tunga bloggare ligger på plattformen bevisar dessutom att prestandan håller bra.

Utanför Sveriges gränser finns flera exempel på dagstidningar som kör plattformen på sin huvudsajt, bland annat All Things DigitalThoughtLeader, GigaOmTimes Live, Ann Arbor Chronicle, The Gazette, Wired eller Mashable. I Sverige däremot hittar jag få om någon, bortsett från de som använder WordPress på sina bloggar (det räknas numera som ganska default).

Istället väljer man specialsydd system, men liten användarbas, inte sälla väldigt konsultintensiva. Ja, det kanske måste vara så? Kanske kan man säga att en bransch med unika och speciella behov och förutsättningar kräver specialsydda system. Men ser man på Svenska magasin så verkar uppfattningen vara en annan. Där finns redan nu en uppsjö titlar som rullar på WordPress. Elle, Nya Affärer, Må Bra, Fokus och Cafe är exempel på det.

Man kan inte låta bli att fundera på vad som kan ligger bakom detta? Troligen skulle det vara svårt för de riktigt stora titlarna att köra WordPress, men Sverige har mängder av små och medelstora dagstidningar och där borde plattformen kunna passa väldigt bra.

Jag ser verkligen fram emot ett sådant initiativ och kommer följa det noga, då det kommer!

Uppdatering, Som Johan säger ligger även Finansliv på wp, snyggt och bra. Samma sak med Folkbladet.nu på wp även de (tack Robert Sundelin).

Ramverk för webben – stor och smått

Massvis med arbete sker just nu med de stora php-ramverken, kul och inspirerande. Själv har jag arbetet med några av dem, till exempel Zend Framework som nu siktar på ver 2.0. Tyvärr har jag lite blandade erfarenheter av just zends ramverk och jag gav upp mina försök efter en hel del last-tester. Det visade sig, som många andra pekat ut, att det i övrigt så underbara ramverket var galet långsamt. Trots all tänkbak optimering, strippade includer, apc och allt mellan himmel och jord så gick det inge vidare snabbt, det gick faktiskt helt galet långsamt -och vad är då fantastiska klasser till för glädje?

Kanske blir det bättre om man kör med Zends egen stack men där går min gräns. Nu är det emellertid dags för version 2.0 och vi får väl hoppas att Matthew Weier O’Phinney och Co kan göra något åt saken.

Det rör på sig även på andra fronter, Codeigniter har ju brutit loss sin Reactor och Phil Sturgeon har just börjar arbeta på ett helt nytt mvc-ramverk som han kallar för Fuelphp och Drupal 7 kan man i viss mån även se som ett ramverk och ännu lite i sin linda.

Wbb-ramverken har funnits ganska länge och de verkar som att det enda de gör är att växa och bli större, mer kod, fler funktioner. De verkar nästan lida av samma sjuka som Facebook och Twitter, större och större dag för dag, men kanske inte nödvändigtvis bättre.

Spontant kan jag sakna de som inte försöker gör allt, de minimalistiska projekten, som kan lite mindre men gör det desto bättre. Ramverk riskerar annars gå i samma fälla som till exempel Drupal som numera är fullkomligt överfullt med allehanda funktionalitet och snacken om Drupal SmallCore är intressant.

Mitt favoritramverk skulle så ut såhär

  • #1 Snabbt
  • #2 Redo för komplex utvecklingsmiljö dev/stage/prod osv
  • #3 Inbyggd cache memcached såklart
  • #4 Förberett för att enkelt integrera med andra ramverk
  • Och bra och tydlig struktur, php:s traditionella ”man-kan-göra-hur-man-vill-är-bra” är inte alls bra!

Ajax med WordPress – några konktreta tips

Många vill använda ajax-requests i sina pluginer eller templates och det finns flera olika sätt att göra detta på. Här kommer några ganska konkreta tips som kan vara bra att ha i bagaget då man ska implementera ajax på wordpress. För att det ska fungera behöver du köra php5 och wp3.1.

Wp behöver en ”ajaxurl” för att köra en request så vi inleder med att skapa en sådan. Man ser ganska ofta hårdkodade varianter men det är både bättre och säkrare att använda <?php wp_localize_script( $handle, $object_name, $l10n ); ?>. Kanske känns det lite märkligt men som dokumentationen och som wphardcore.com tipsar om så kan metoden deklarera javascriptvariabler med ett namespace, vilket är exakt vad vi vill göra.

wp_localize_script('mitt-ajax-handle','MittNamespace', array(
	'ajaxurl' => admin_url('admin-ajax.php'),
	'nonce' => wp_create_nonce('min-nonce')
	)
);

Detta genererar följande kod i din template, förutsatt att du använder <?php wp_head(); ?> på ett korrekt sätt. Som man ser är detta ett javascriptobjekt som det går utmärkt att använda för att köra dina ajax-requests. Dessutom får du en korrekt nonce som gör att dina requests blir säkrare. Någon som man alltid bör tänka på. En nonce är enkelt förklarat en sifferrad som gör att du kan validera huruvida ett request körs från din sajt eller inte.

/* <![CDATA[ */
var MittNamespace = {
	ajaxurl: "http://www.dinsajt.se/wp-admin/admin-ajax.php",
	nonce: "125088c92dasd4c"
};
/* ]]> */

Därefter behöver du registrera en ajax-action och dessutom tala om vilken metod som ska köras. Det gör du via följande action hook.

add_action('wp_ajax_nopriv_min-ajax', 'min_metod');
add_action('wp_ajax_min-ajax', 'min_metod');

Wp erbjuder två varianter för detta, en då man har en hook för inloggade, och en för oinloggade, vill man kunna erbjuda ajax för alla användare får man snällt registrera in samma metod två gånger. Vi behöver även skriva metoden (eller funktionen) som ska köras då ett ajax-request till vår action "min-ajax" kommer. Där kan du fånga data med $_POST eller $_GET som vanligt. Men det vikitiga är att först kolla efter vår nonce och därefter verifiera. Glöm inte att avsluta metoden med en "die();" utan den kör wp din request fel.

function min_metod() {
	$nonce = $_POST['nonce'];
	if (!wp_verify_nonce($nonce, 'min-nonce')){
		die();
	}
	// Din kod här....
	die();
}

Nu behöver du bara lägg till lite javascript för att skapa ett ajax-request. Som vanligt skriver du javascript i en separat fil (.js), lägger den i pluginmappen eller templatemappen och inkluderar den med hjälp av följande rad. Efter som jag vill använda jquery för mitt resuest passar jag på att inkludera även det. Beroende på när requestet ska köras få du trigga det, med "click" eller annat, men underfär såhär fångar du nonce och ajaxurl.

wp_enqueue_script('min_js', WP_PLUGIN_URL.'/min-plugin/min_js.js', array('jquery'));
jQuery(document).ready(function() {
	jQuery.post(MittNamespace.ajaxurl, { action : 'min-ajax', nonce : MittNamespace.nonce}, function(data) {
	// returnera
	});
});

Ajax är trevligt att arbeta med och wp har bra inbyggt stöd för att skapa dynamiska sajter. Men se till att säkra upp alla dina requests med en nonce, det har du mycket att villa på.