I wanted to use the_content filter to check the post categories. If a post has certain categories selected, depending on the user I want to return a message saying something like 'Sorry, you cannot view this', rather than the content itself.

Having added the filter though, have discovered, the_content filter does not pass the post id or post into the function, so I cannot check the post to see if the conditions are met.

Can anyone suggest a way of doing this, without updating all the page templates?

1 Answer 1


You'll need to rely on the global post variable, or get_post(), which is essentially the same thing.

    function( $content ) {
        $post = get_post();

        if ( in_the_loop() && has_category( 123, $post ) ) {
            // etc.

        return $content;

I included a check for in_the_loop(), because the the_content filter is commonly applied outside the loop in contexts where there won't necessarily be a relevant global $post variable.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.