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.