WordPress’ `post_class` function makes it really easy to write out a variety of class names to post containers that give us a finer-level of control when working on styling WordPress posts.

But there are times in which you may want to actually add a custom class to a post (or to a single post) depending on the nature of the content of the most.

And sure, you can easily add additional parameters to the `post_class` function, but those are still static parameters that will be applied to every posts.

What about in cases where you want to add a class if, say, no more tag is present in the content?

Add Post Class in WordPress

First, WordPress provides a filter that allows us to hook into the `post_class` function and modify the array of classes that are added to the post.

This can be done easily enough with something like this:

`add_filter( ‘post_class’, ‘example_add_post_class_for_more_link’ );`

As with most other hooks in WordPress, this will require that we define a function named `example_add_post_class_for_more_link` in order to add our custom class.

Now, here’s the the thing:

  • The function accepts a single array which includes all of the classes being applied to the post
  • Depending on where, in the The Loop, you’re applying this class, you may need to get access to the global `$post` variable

In the following gist, I’ve defined a function will add a `has-no-more-link` if the author did not include a `<!–more–>` tag in their content:

The code should be easy enough to follow, but for the sake of completeness, here’s what’s going on:

  • If the `<!–more–>` tag is not found in the post content, then we push the `has-no-more-link` class to the `$classes` array.

This will then give you the ability to style posts that do not have a more tag link within the context of your theme.