$query = new WP_Query( array( ‘s’ => ‘キーワード’ ) ); $query->have_posts();
have_postsはdbに記事があるか否かではなく、表示すべき記事がまだ残っているかを判定する模様。 だから、ループ内、ループ前でしか使えない。なお、boolを返す。
リファレンスに次のようにある。
(ループ内か、ループの前でのみ使用可能) 表示する投稿が残っているかを示す。残りの投稿がなければ内部で rewind_posts() を呼び出してから false を返す。rewind_posts() の影響により、have_posts() が連続して false を返すとは限りません。 https://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/WP_Query