Ny version av Dropbox upload form för WordPress

Inställningar för WordPress pluginet Dropbox upload formFör några veckor sen var jag på WordCamp Stockholm. På hacker natten tittade jag över mitt WordPress plugin: Dropbox upload form. Tyvärr så verkade det inte fungera riktigt i WordPress 3.0. Nu kommer jag inte ihåg vad som var trasig men det var nått med php classen jag använde. Dropbox har nu också en egen API. Det hade dom inte när jag gjorde pluginet. Jag tittade lite på vad man kunde göra med API och bestämde mig för att använda det. Det finns en nackdel med den nya API’n om man gör en webbapp, man måste registrera en egen app för att få en API nyckel.

För att skaffa en API nyckel som kan användas till mitt plugin gör man följande.

  • Registrerar en ny Dropbox app
  • Hitta på ett namn och välj webb som platform
  • Kopierar sen app nycklarna, längst ner. Både Key och Secret behövs.
  • Klistrar in Key och Secret i inställningarna för pluginet.
  • Nu ska pluginet fungera som förr fast med Dropbox API

Lite jobbigare installation blir det men efter man satt upp allting så fungerar det bra. Kanske kommer det lite mer funktioner till pluginet snart. Jag hade först en tanke på att lägga till ett val att skicka ut ett mail till valfri adress när en ny fil laddas upp. Nu blev det bara en omskrivning av uppladdnings funktionen så den använder Dropbox API istället för den tidigare hackiga lösningen.

Förväntningar på WordCamp Stockholm 2010

Nu snart är jag på väg till WordCamp Stockholm på Tekniska Museet. WordCamp är konferens om WordPress där WordPress nördar träffas och pratar om WordPress. Natten mellan lördag och söndag blir det kodning för den som vill stanna kvar på museet. Jag ska försöka packa ner en kudde så jag kan ta en liten tupplur på nått undanskymt ställe. Stannar jag kvar över natten (89% tror jag det) så ska jag försöka fixa lite med Dropbox Upload Form pluginet jag gjorde till WordPress. Jag fick lite kod och idéer av en användare på WordPress forumet om saker som jag skulle kunna lägga till. Bland annat så ska man kunna välja att få ett mail när en fil laddas upp. Annars så skulle jag vilja göra ett tema baserat på HTML5-Boilerplate. Men först blir det massa föreläsningar och sessions.

Rewrite rules för custom post i WordPress 3.0

Jag har jobbat med ett projekt i WordPress 3.0 där jag använt custom post funktionen. Dvs man kan definiera egna post typer som får en egen editor. Problemet som jag hade var med permalänkarna, för jag ville ha fina länkar tex

url.com/movies/

listade alla poster som var av typen movies.

Jag fick kolla lite på WordPress rewrite funktion som man kan göra egna permalänkar med. Koden som fungerade för mina behov är nedan. Den paginerar, listar alla inlägg som är av post typen movies när jag går till den utl’en och den visar enskilda inlägg av typen movies när jag går till

url.com/movies/the_warriors/

Det här var funktionen jag behövde använda i functions.php.

function movie_rewrite_urls($wp_rewrite) {
  $newrules = array();
  $newrules['movies/?$'] = 'index.php?post_type=movies';
  $newrules['movies/?([A-Za-z0-9-]+)/?$'] = 'index.php?post_type=movies&name=$matches[1]';
  $newrules['movies/page/?([0-9]{1,})/?$'] = 'index.php?post_type=movies&paged=$matches[1]';
  $wp_rewrite->preg_index(1);
  $wp_rewrite->rules = $newrules + $wp_rewrite->rules;
}
add_action('generate_rewrite_rules', 'movie_rewrite_urls');

Liten genomgång av funktionen.

$newrules['movies/?$'] = 'index.php?post_type=movies';

/?$ efter movies sägar att det är en end of line. Dvs url.com/movies/ ska skickas till url.com/index.php?post_type=movies där wordpress tar över och visar en lista med alla post typer av movies karaktär.

$newrules['movies/?([A-Za-z0-9-]+)/?$'] = 'index.php?post_type=movies&name=$matches[1]';

/?([A-Za-z0-9-]+)/?$ efter movies säger till att alla bokstäver, siffror och tecken ska skickas vidare till index.php som tar över och visar inlägget som matchar namnet efter /movies/ ex

url.com/movies/the_warriors/

skickas till

index.php?post_type=movies&name=the_warriors

. Det gör så att enskilda inlägg fungerar.

Den sista rewrite regeln gör så att paginering fungerar. Dvs url.com/movies/page/2/ visar sidan två om man har många movies inlägg.

Givetvis så måste man registrera en custom post av typen movies om det här exemplet ska fungera. Jag har länkat till två sidor som skrivit om custom post i WordPress 3.0 annars fungerar ju en google sökning om man vill ha mera info.