Bättre snabbtangenter för WordPress

Interfacenavigering med krav på mus är en fiende till  effektivt och hållbart arbetsflöde. WordPress kommer med en grunduppsättning av snabbtangenter som kan aktiveras på användarnivå – men uppsättningen är tyvärr anpassad för den genomsnittlige bloggaren (moderera kommentarer) och inte för den redaktionella medarbetaren (hoppa mellan textfält i textredigeraren) .

Det borde dock vara en smal sak att sätta upp snabbtangenter anpassade för en redaktion med grymma jQuery-pluginen shortcuts.js.

Uppdatering:
En enkel plugin för kortkommandon till Spara, Publicera och Förhandsgranska heter MindValley Shortcut Framework och den verkar fungera bra.

Skala WordPress – fixa databasen

En vanligt fråga är om det ens är möjligt att bygga en webbplats i Aftonbladets storlek i WordPress. När den dyker upp känns det bra att peka på WordPress.com. Med dess 25 miljoner bloggar och en halv miljard dagliga sidvisningar kan den väl ses som en kapabel installation. Att 400.000 inlägg och lika många kommentarer postas varje dag visar ju även att det är ett CMS som pallar med konstanta inserts.

Men varför finns det då en myt om att WordPress skalar dåligt?

Ett misstag som många gör är att utgå från en egenhostad standardinstallation med slumpvis valda plugins från WordPress rika pluginkatalog. En installation som inte är förberedd för hög last och som dessutom använder sig av tilläggskod som lika gärna kan vara skriven av en glad amatör som en ingenjör kommer naturligtvis att stå pall särskilt länge för en stor besöksvolym.

Som standard skeppas WordPress förberedd för en LAMP-installation på ett vanligt webhotell – målet är det ska vara väldigt låg tröskel för nyfikna. Den berömda 5-minutersinstallationen är en nycklarna till WordPress enorma framgång.

Så, vad kan den med ambitioner göra för att nå framgång med en större installation? Förutom hygienfaktorer som snabba diskar, kraftiga processorer och feta linor finns det mycket att göra. LAMP i CGI-läge är smidigt och välbekant för många – men har oftast för mycket overhead. Automattic själva kör med proprietära Litespeed, som inte bara är ruggigt snabbt utan även är kompatibelt med en mängd Apachemoduler. Jag väljer ofta en lösning med Nginx och fastcgi. För den som enkelt och snabbt vill prova något nytt rekommenderas LowendVPS’ fantastiska bootstrapping-script – med några kommandon får du en komplett NAMP-miljö uppconfad för WordPress.

Även i WordPress-stacken finns mycket att göra:

Ett vanligt prestandaproblem beror på allt för dynamiska permalänkar:  /%postname%/ som permalänkmall må vara snyggt och piffigt men innebär också onödigt hög belastning i vid var anrop eftersom wp först måste lista ut vad sidan innehåller för att kunna servera rätt sorts innehåll. Använd till exempel /artikel/ som bas för tidningsartiklar (eller varför inte klassikern /%year%/%monthnum%/%day%/%postname%/ ?).

Eftersom WordPress API är väldigt tillåtande är det även möjligt att snabbt slänga ihop ett tema eller plugin och sedan sprida det vidare till världen. Hastighetsoptimering eller certifieringar är inget krav för att publicera sina alster i de officella tema- och pluginkatalogerna.

Plocka fram dina pluggar och teman. Kavla upp ärmarna:

  • Se till att alla plugins gör eventuella SQL-anrop genom $wpdb-objektet – egnabryggda lösningar med mysql_connect() är inte bara onödigt, det förhindrar caching och lastfördelning.
  • Se till att alla frågor som inte måste vara realtids-fräsha cachas via WP_Object_cache eller Transients API:et (du vill antagligen använda det senare eftersom det garanterar att data sparas och faller tillbaka till mysql-lagring om andra möjligheter saknas).
  • Installera memcached på så många maskiner som möjligt och kicka igång Memcached Object Cache som ser till att WordPress objectcache använder snabbt ram i stället för dyra dbfrågor.
  • Välj ut en cache-plugin som lirar bra med dina databasfrågor. En favorit på senare tid är  DB Cache Reloaded Fix  som inte bloatad med system för sidcachning (som jag ändå inte använder).
När grundjobbet är avklarat är det dags att förbereda installationen för en större mängd frågor. Det först är att byta ut standardklassen för databasfrågor mot HyperDB – ett databasmodul på steroider utvecklad för WordPress.com. Med stöd för replikering och partitionering är det är nu möjligt att klustra upp installationen ordentligt och fördela sqlfrågorna över en mängd servrar.
Nästa steg är att se dynamiska sidor och frontend-cachar, men det är en bloggpost för sig.

Publicera i WordPress från Google Docs

Lokaltidningen Bangdor Daily har open sourcat vissa verktyg som de använder för webbpublicering. En av de mest intressanta delarna är Docs to WordPress som gör det möjligt att skriva och uppdatera inlägg direkt från Google Docs API.

Pluginen söker periodiskt igenom en förutbestämd Docs-mapp efter textdokument. När ett nytt dokument påträffas först det över till WP det som ett utkast i väntan på granskning. Om dokumentet däremot är en uppdaterad version av en text som redan publicerats slår ändringarna igenom direkt. Efter publicering/uppdatering är tanken att dokumentet ska flyttas till en ny mapp – men detta verkar bugga i senaste versionen.

Med undantag för ovanstående bugg fungerar systemet bra och är väl genomtänkt. Det är till exempel möjligt att skapa en filterfunktion för detaljerat modifiera den HTML som först över från Docs. En annan finess är att det går att läsa ett dokuments Docs-kommentarer i Wp-Admins redigeringsläge.

Funktioner som bör utvecklas är tvåvägssynkning så att ändringar i WordPress propageras tillbaka till docs, ett låsningsläge (både via Docs interface-API och i WordPress) för att förhindra versionskonflikter vid simultana textuppdateringar i olika plattformar samt en Docs-widget för sökning efter material som tidigare publicerats i WP.

Mobilsajt med WordPress

Mobilsajten (webbappen) gör f.n. följande:

  • Innehåll som inte alls funkar på mobiltelefoner tas bort (Livelöpet, etc), ”tvätt” av annat innehåll (CoverItLive).
  • Bildomskalning
  • Anpassning av videolänkar
  • Specialanpassade utmallar för innehåll
  • Mobilspecifikt innehåll (geoads/väder)
  • Annonser från AdTech/Helios.

För att bygga motsvarande funktionalitet ovanpå WP skulle vi kunna utgå från pluginet WordPress Mobile Pack, som användes för att mobilanpassa skollistan. WPMP innehåller ett antal delkomponenter(sub-plugins), framför allt ett plugin för terminaligenkänning, och annat för mobilanpassade (Google) annonser.

Förutsatt att m.aftonbladet.se behöver skala bilder serverside och anpassa videolänkar beroende på terminal skulle vi behöva använda t.ex. WURFL för terminaligenkänning–ett plugin som vi sannolikt behöver snickra ihop själva.

Det skulle sannolikt vara möjligt att lägga till funktionalitet motsvarande mobilfliken i Escenic Content Studio som en ”WordPress metabox”, och ändra i aktuell utmall/theme. Man kan notera att WPMP endast kan styra besökarna mellan ”mobil-theme” och ”vanlig theme”, men det borde inte vara vidare komplicerat att ha ytterligare en theme för t.ex. tablets.

API:er för mobil-appar, STTV, och dylikt.

Det skulle antagligen gå utmärkt att använda sig av t.ex. JSON API, eventuellt skulle vi
behöva begränsa vilken data som exponeras. Det är antagligen en bra idé att ha en whitelist med html-taggar som är tillåtna i en posts/artikels ”content” (och ta bort all annan markup), alternativt att ta bort all/viss markup i en anpassad variant av JSON API -pluginet.

Integration med Facebook-kommentarer

Det finns naturligtvis en stor en mängd plugins som på olika sätt integrerar Facebook i WordPress. För att helt och hålla ersätta WordPress native kommentarsystem med Facebooks Open Graph använder vi Facebook Comments for WordPress.

För (eventuellt) framtida bruk feedar vi batchvis in postade kommentarer med Facebook Comments TO WordPress – så att de tryggt och säkert återfinns i WordPress kommentarssystem.

In-Page Editing i WP

Front-end Editor är en relativt ung men piffigt plugin som gör det möjligt att efterhandsredigera texter live på webbplatsen utan att du behöver ta omvägen via wp-admin.

Jag har installerat den på devsiten – så det är bara att prova på att redigera texter.

Pluginen använder dock en javascriptmodul som inte stödjer Chrome 12, så jag har gjort ett snabbhack som ser till att Front-end editor inte laddas om du besöker webbplatsen med en läsaren (plugin: ‘Front End Editor – Chrome 12 fixer’). Problemet rapporterat till utvecklarna.

Värt kolla på till framtiden är möjligheten att byta ut bilder genom att redaktören klickar på dom på ettan – detta kräver dock ett ingrepp i temafilerna.