I don’t want to display post with empty body / post_content on my home page. So I added below code to my function.php. It detects post with empty body but it still display them. I expected that if I return ” the post won’t be displayed.

  • How can I remove post from displaying?
  • How does the filter the_posts work?

The code:

function remove_post_with_empty_body ( $posts ) {

    if (($posts->post_content) == '') { 


        echo 'empty'; //also tried return false; and return null;

        return '';
    }
    else {

        echo 'not empty';
        return $posts;
    }

}
add_action('the_post', 'remove_post_with_empty_body');

1
1

First thing, in your code you are using the_post hook but in your question you are asking about the_posts hook, which are two different things.

the_posts gets called just after the posts have been selected from the database and it passes an array of $posts to your function, so you should use that.

as for the_post hook, it gets fired (usually) inside the loop it self which is to late to change any thing (like redirect) and its not a filter hook, but an action hook which means that if you return nothing, its just exiting your function and not effecting the outcome.

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *