WordPress First & Last Navigation Items

I used to have a function which I would include in my WordPress functions.php file that would add a unique CSS class to the first and last menu items. This would be so you could assign them unique styles, such as padding or borders, for better looking menus in your themes.

With the advent of WordPress’s Menu system in version 3, I found it necessary to add some more functions for given situations: calling wp_list_pages(), wp_list_categories(), or wp_nav_menu().  So here they are:

First and Last Class for wp_list_pages();

// adds a unique class to the first and last items in the list
function add_markup_pages($output) {
$output= preg_replace('/page-item/', ' first-page-item page-item', $output, 1);
$output=substr_replace($output, " last-page-item page-item", strripos($output, "page-item"), strlen("page-item"));
return $output;
}
add_filter('wp_list_pages', 'add_markup_pages');

First and Last Class for wp_list_categories();

// adds a unique class to the first and last items in the list
function add_markup_categories($output) {
    $output= preg_replace('/cat-item/', ' first-cat-item cat-item', $output, 1);
    $output=substr_replace($output, " last-cat-item cat-item", strripos($output, "cat-item"), strlen("cat-item"));
    return $output;
}
add_filter('wp_list_categories', 'add_markup_categories');

First and Last Class for wp_nav_menu();

// adds a unique class to the first and last items in the list
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');

Disclaimer: I don’t remember where I picked up these functions from along the way, so I apologize if there is credit due to someone, somewhere.

Some Updates

Here are some updates of what has been happening around here lately.

First, I moved in with Rachael a few weeks ago, and last week they pulled a dead person out of the apartment downstairs. He or she had been there long enough to stink up the stairwells pretty bad. The EMS folks had to wear full-on biohazard suits. Check it out:

Dax and I went out to a farm in Clyde with Gary and his girls to check out a party where they were building a real, working trebuchet. Unfortunately, there were a series of setbacks, and they never got the thing working, but it still looked pretty cool.

Rachael and I attended the 16th Annual James Brown Oktoberfest, which was the first time for both of us, where I walked away with the Best Male Costume prize.  No one else was able to pull of the German pimp look as well as I. I owe it all to Rachael, of course, since she sewed my costume (and her own as well).

That’s all for now. Stay tuned!