web-dev-qa-db-fra.com

Comment fonctionne le filtre the_posts?

Je ne souhaite pas afficher de message avec body/post_content vide sur ma page d'accueil. J'ai donc ajouté le code ci-dessous à mon function.php. Il détecte les publications avec un corps vide, mais les affiche toujours. Je m'attendais à ce que si je reviens, le message ne sera pas affiché.

  • Comment puis-je supprimer poster de l'affichage?
  • Comment fonctionne le filtre the_posts?

Le 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');
5
Radek

Tout d’abord, dans votre code, vous utilisez the_post hook mais dans votre question, vous parlez de the_posts hook, qui sont deux choses différentes.

the_posts est appelé juste après la sélection des publications dans la base de données et passe un tableau de $ publications à votre fonction. Vous devez donc l'utiliser.

quant à the_post hook, il est déclenché (généralement) dans la boucle elle-même, ce qui est trop tard pour changer quoi que ce soit (comme une redirection) et ce n'est pas un crochet de filtre, mais un crochet d'action qui signifie que si vous ne retournez rien, c'est tout votre fonction et ne pas affecter le résultat.

7
Bainternet