I have two different pieces of code and it’s returning two different results.
$search_query = new WP_Query();
$search_posts = $search_query->query('s=computer');
echo count($search_posts);
vs.
$search_posts = get_posts('s=computer');
echo count($search_posts);
What is the reason for the different values?
(The value provided by the first one is correct. It’s the same as the number of posts that I get when I do a regular search in WP. But the first piece of code won’t work inside the plugin’s php file, it would work only in a template.)
Thanks.
The default arguments for
get_posts()
function include'numberposts' => 5
.So if you’re querying for a search term that returns more than five (5) results the second query will return a maximum value of
5
unless you pass's=computer&numberposts=-1'
as your query string.The
WP_Query
object doesn’t have a'numberposts'
default, although it is affected by the “Blog pages show at most” count in your settings panel. So if you want the total count using thequery()
function, you should override the defaults like this: