I hope this is not too dumb: even though I'm learning at an acceptable rate, my WP knowledge still has some important gaps.
What do I have:
search.php template gets its results from the normal global
$wp_query -> found_posts correctly returns the whole amount of results (say, 132) and
$wp_query -> post_count, being the loop paginated, returns the correct number of posts fot that page up to the maximum of
posts_per_page (say, 10).
What do I need:
I'm trying to put a filter by year
<select> at the bottom of the page; of course it should allow the user to pick from the years from ALL of the 132 results and not only by the 10 in the current page.
What does trouble me:
$wp_query -> posts only holds the
post_count posts pertinent to the current page, not all of the 132. If I alter the search query via a
pre_get_posts filter, telling her to set
posts_per_page to -1 when
is_search(), of course I get all the 132 posts, but also I lose pagination.
What did I come up to so far:
I thought I'd need a "whole" query, parallel to
$wp_query, holding up all of its potential results, not only the
So how do I populate this elusive array of years?
- Just to be sure to get from the very same bunch of results of
$wp_query, I assign
$wp_query -> request, but without its
LIMITclause, to a variable; then I
$wpdb -> get_resultsit;
- I pick the year from each result and I put it into the array;
I'm pretty sure there must be a better, shorter, more efficient and maybe even "WP core"ish way to to this; but I haven't been able to get to it so far, nor to find an answer here or elsewhere.
Could any of you route me to the right direction?