web-dev-qa-db-ja.com

フィルタthe_postsはどのように機能しますか?

私のホームページには、空のbody/post_contentの投稿を表示したくありません。だから私は私のfunction.phpに以下のコードを追加しました。空の本文の投稿を検出しますが、それでも表示します。 「」を返した場合、投稿は表示されません。

  • remove投稿を表示しないようにするにはどうすればよいですか。
  • filter the_postsはどのように機能しますか?

コード:

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

まずコードではthe_postフックを使用していますが、あなたの質問ではthe_postsフックについて質問しています。これは2つの異なることです。

投稿がデータベースから選択された直後にthe_postsが呼び出され、それがあなたの関数に$ postsの配列を渡すので、それを使うべきです。

the_postフックに関しては、それは(通常)ループの中で起動されます。(リダイレクトのように)何かを変更するのは遅くなりますが、フィルタフックではありません。あなたの機能と結果に影響を与えません。

7
Bainternet