Skip Navigation

[Resolved] Only show search results AFTER user has performed a search

This support ticket is created 6 years, 10 months ago. There's a good chance that you are reading advice that it now obsolete.

This is the technical support forum for Toolset - a suite of plugins for developing WordPress sites without writing PHP.

Everyone can read this forum, but only Toolset clients can post in it. Toolset support works 6 days per week, 19 hours per day.

Sun Mon Tue Wed Thu Fri Sat
- 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 7:00 – 14:00 -
- 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 15:00 – 16:00 -

Supporter timezone: Europe/London (GMT+00:00)

This topic contains 19 replies, has 2 voices.

Last updated by Nigel 6 years, 8 months ago.

Assisted by: Nigel.

Author
Posts
#611474
Screen Shot 2018-01-31 at 10.12.14 AM.png

Hello,

Thank you very much for making the time for this issue. I really appreciate it!

Yes, I think your developer is correct. I can confirm that when I using the following two shortcodes together, the issue occurs:
[wpv-form-view name="class-search" target_id="self"]
[wpv-view name="class-search" view_display="layout"]

and when using the following single shortcode, the issue does NOT occur:
[wpv-view name="class-search"]

Settings chosen when generating the two separate shortcodes attached.

#613070

Hi Nigel,

Going back to my original issue with this ticket (regarding only showing results AFTER a search has been performed)...

The filter solution you provided (https://toolset.com/forums/topic/only-show-search-results-after-user-has-performed-a-search/#post-607998) works great, EXCEPT for when distance is the ONLY search field. The issue is that no results appear ever, even when there is supposed to be. Here's a quick screenshare: hidden link

Do you have any ideas for how I might modify that filter solution you provided to work when distance is the only search field?

Thanks!!

#613397

Nigel
Supporter

Languages: English (English ) Spanish (Español )

Timezone: Europe/London (GMT+00:00)

Hi Lauren

The handling of the distance filter is different than all of the other filters, and it's not possible to check whether a distance search is being used with the wpv_filter_query_post_process filter being used in my previous code sample.

So a different approach is needed. This time we can use the wpv_filter_query filter, which runs before the database is queried, and simply check whether the $_POST object contains anything, which it would if filters are applied, but otherwise would not, and if it is bork the query by adding an impossible condition.

So, you could try this:

/**
 * No initial results
 *
 * Bork results unless a filter has been applied
 * which implies $_POST object with search terms
 */
function tssupp_bork_results( $query_args, $view_settings, $view_id ){

    $target_views = array( 92 ); // Edit to add IDs of Views to add this to
 
    if ( in_array( $view_id, $target_views ) && empty( $_POST ) ) {

    	// No $_POST object on initial page load, so bork View query
    	$query_args['post__in'] = array( 0 );
    }
	return $query_args;
}
add_filter( 'wpv_filter_query', 'tssupp_bork_results', 101, 3 );

But note that in this case whatever is in the no-results-found section of your Loop Output will be shown, you'll have to decide how you want to handle that.

#613442

Thanks Nigel. Unfortunately, this seems to bork results initially as well as after a search, similar to the first solution.
(i.e. results are always empty, not just initially empty.)

Do you think that checking for the presence of the 'toolset_maps_distance_center' parameter might be an effective way to handle this? Might something like this work? Or is this not a good way, in your opinion, to handle it...

function tssupp_bork_results( $query_args, $view_settings, $view_id ){
 
    $target_views = array( 22 ); // Edit to add IDs of Views to add this to
  
    if ( in_array( $view_id, $target_views ) && !isset( $_GET['toolset_maps_distance_center'] ) ) {
 
        // No toolset_maps_distance_center param present, so bork View query
        $query_args['post__in'] = array( 0 );
    }
    return $query_args;
}
add_filter( 'wpv_filter_query', 'tssupp_bork_results', 101, 3 );

Thanks again for your help! Really appreciate it, especially as I'm becoming familiar with Toolset.

#627025

Nigel
Supporter

Languages: English (English ) Spanish (Español )

Timezone: Europe/London (GMT+00:00)

Hi Lauren

I'm just reviewing outstanding escalated threads and realise I missed your last reply, which was some time ago.

Did you try your code? If you still need help let me know and I'll test some code on a local site.