How To Add a Class to the First Post in The Loop

Snippets by IsItWP

Are you looking for a way to add a class to the first post in The Loop? This snippet will add a first class to the first post in The Loop, which will let you add unique styling to the first post.


All you have to do is add this code to your theme’s functions.php file or in a site-specific plugin:

add_filter( 'post_class', 'wps_first_post_class' );
function wps_first_post_class( $classes ) {
    global $wp_query;
    if( 0 == $wp_query->current_post )
        $classes[] = 'first';
        return $classes;

Note: If this is your first time adding code snippets in WordPress, then please refer to our guide on how to properly copy / paste code snippets in WordPress, so you don’t accidentally break your site.

If you liked this code snippet, please consider checking out our other articles on the site like: CSS Hero Review.

Comments   Leave a Reply

  1. Marek Jakubčík April 18, 2021 at 9:59 pm

    Any idea why this does not work with woo shortcode? It adds class to each product in the loop. It works ok at the shop page.

    1. Which shortcode are you using?

  2. Hi,

    This has worked great, however, if I have pagination and i go, say, page 2, it adds the class to the first post on page 2, which I don’t particularly want. How would I be able to update the code to add the ‘first’ class to the first post of all the posts, even counting those paginated.

    Thanks a lot for the article it’s been very helpful! 🙂

    1. just add this condition if( 0 == $wp_query->current_post && get_query_var(‘paged’) == 0 ) : ?>

  3. Yeah! for adding a last class to the post, need only to add a condition like $wp_query->current_post === $wp_query->found_posts?

    1. Something like this should work,
      if( $wp_query->current_post == $wp_query->post_count-1 )

      1. Thank you man, i was unsafe about found_posts start from 0 (my bad). However, in same cases post_count isn’t a right choice because it contain the total number of posts being displayed. The use of found_posts or post_count depend which query had been performed, post_count have the same value of “posts_per_page” if is defined in a query or the default value defined into the read settings (sorry for my english).

        1. Hi Widzo, I think it depends on the results you want, if you want to add the class to the last post on every page you would use “post_count” on the very last post only you would use “found_post”

  4. great! And if I want to add a class always to the fourth column of the loop? For example, I have a loop showing my posts into 4 columns and I need to add this class to the right column. How can I do that?


    1. Hi Fabio, I would need to see your columns loop in order to see what would need to be done.

Add a Comment

We're glad you have chosen to leave a comment. Please keep in mind that all comments are moderated according to our privacy policy, and all links are nofollow. Do NOT use keywords in the name field. Let's have a personal and meaningful conversation.

WordPress Launch Checklist

The Ultimate WordPress Launch Checklist

We've compiled all the essential checklist items for your next WordPress website launch into one handy ebook.
Yes, Send Me the Free eBook!