Until now I have been using below code to get the number of results when someone searches and to display that count.
<?php /* Search Count */ $allsearch =& new WP_Query("s=$s&showposts=-1"); $count = $allsearch->post_count; echo $count . ' '; wp_reset_query(); ?>
But this does not seem like valid code. It shows below error:
Deprecated: Assigning the return value of new by reference is deprecated
Can anyone please suggest the proper way in which I get get the search count. The above code is placed in the heading of my index.php file of theme within a conditional statement to display different heading based on what type of page a user is on.
If you are within the search template i.e Search query is your main query. You should then be able to get search results from global
$wp_query without running an additional query.
global $wp_query; echo $wp_query->found_posts.' results found.';
If you have to get count out of search context. You can combine both techniques to get efficient result. It wont fetch all the post but you can get the search count.
$allsearch = new WP_Query("s=$s&showposts=0"); echo $allsearch ->found_posts.' results found.';
About the error you are getting, it lies here
$allsearch =& new WP_Query("s=$s&showposts=-1");
Remove the “&” beside the equal sign to get rid of the error. So it will look like this
$allsearch = new WP_Query("s=$s&showposts=-1");