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.