Add a class to the first and last items of a WordPress menu

If you’re using the WordPress dynamic menus, you can use the following code to add first-menu-item and last-menu-item to the appropriate menu items.

Add the following to your theme’s functions.php:

function add_first_and_last($output) {
    $output = preg_replace('/class="menu-item/', 'class="first-menu-item menu-item', $output, 1);
    $output = substr_replace($output, 'class="last-menu-item menu-item', strripos($output, 'class="menu-item'), strlen('class="menu-item'));
    return $output;
}
add_filter('wp_nav_menu', 'add_first_and_last');

Via Kuroi at the WordPress.org forums.