• Resolved titodevera

    (@titodevera)


    Hello. I´m trying to search by date range but it´s not working. Here is my code:

    add_filter('uwpqsf_query_args','insert_date_to_query','',3);
        //if you are using default template, you will need to replace uwpqsf_query_args with uwpqsf_deftemp_query instead
        function insert_date_to_query($args,$id,$getdata){
             $args['date_query'] = array(
                    'after'     => strtotime($getdata['date']['from']),
                    'before'    =>  strtotime($getdata['date']['to']),
                    'inclusive' => true
              );
    
          return $args;
        }
    
        add_action('uwpqsf_form_bottom','insert_date_input');
        function insert_date_input($attr){
              $html = '<div class="uwpqsf_class">';
              $html .= '<div><label><span>Desde <small>(fecha)</small></span> <input name="date[from]" value="" type="text" class="datep"></label></div>';//you can use select or other input type
              $html .='</div>';
              $html .= '<div class="uwpqsf_class">';
              $html .= '<div><label> <span>Hasta <small>(fecha)</small></span> <input name="date[to]" value="" type="text" class="datep"></label></div>';
              $html .='</div>';
              echo $html;
        }

    It seems like filter “uwpqsf_query_args” is not working.

    Thanks a lot!!

    https://wordpress.org/plugins/ultimate-wp-query-search-filter/

Viewing 6 replies - 1 through 6 (of 6 total)
  • Plugin Author TC.K

    (@wp_dummy)

    uwpqsf_query_args is for ajax result,if you are using default search template than you should use uwpqsf_deftemp_query instead.

    Thread Starter titodevera

    (@titodevera)

    Perfect, it´s working now, thank you so much 🙂

    Here´s my code (maybe help someone):

    add_filter('uwpqsf_deftemp_query','insert_date_to_query','',3);
    function insert_date_to_query($args,$id,$getdata){
    
        $fromArray = explode("/",$getdata['date']['from']);
        $toArray = explode("/",$getdata['date']['to']);
    
        if(sizeof($fromArray) == 3 && sizeof($toArray) == 3){
            $args['date_query'] = array(
                'after'     => array(
                    'year' => $fromArray[2],
                    'month' => $fromArray[1],
                    'day' => $fromArray[0]
                ),
                'before'    =>  array(
                    'year' => $toArray[2],
                    'month' => $toArray[1],
                    'day' => $toArray[0]
                ),
                'inclusive' => true
            );
        }
        return $args;
    }

    For anyone else finding this, there is another, earlier thread on the same topic which includes my code on adding a robust jQuery datepicker. See: https://wordpress.org/support/topic/search-by-a-date-range?replies=14

    Pete

    (@perthmetro)

    I’m having trouble following the thread with the jQuery datepicker. Would you mind showing the final code we need here, thanks.

    mojamba

    (@mojamba)

    perthmetro, it would help if you were more specific. Are you referring to this thread or the one I linked to (that actually discusses a jQuery datepicker). In either case, both threads show code to use so I am not sure what you are asking for.

    Thank you for this code, here is my adaptation of it!

    add_action('uwpqsf_form_bottom','insert_date_input');
    function insert_date_input($attr){
    		$html = '<div class="uwpqsf_class"><span class="taxolabel-2">Date Range</span>';
    		$html .= '<div><label><span style="display:block;">From </span> <select class="monthsearch" name="date[from-month]">   <option value="">--Select Month--</option><option  value="1">Janaury</option><option value="2">February</option><option value="3">March</option><option value="4">April</option><option value="5">May</option><option value="6">June</option><option value="7">July</option><option value="8">August</option><option value="9">September</option><option value="10">October</option><option value="11">November</option><option value="12">December</option></select>  <input name="date[from-year]" size="4" value="" class="yearsearch" type="text" placeholder="YYYY"></label></div>';//you can use select or other input type
    		$html .='</div>';
    		$html .= '<div class="uwpqsf_class">';
    		$html .= '<div><label> <span style="display:block;">To </span> <select class="monthsearch" name="date[to-month]">   <option value="">--Select Month--</option><option  value="1">Janaury</option><option value="2">February</option><option value="3">March</option><option value="4">April</option><option value="5">May</option><option value="6">June</option><option value="7">July</option><option value="8">August</option><option value="9">September</option><option value="10">October</option><option value="11">November</option><option value="12">December</option></select> <input name="date[to-year]" value="" class="yearsearch" type="text" placeholder="YYYY"></label></div>';
    		$html .='</div>';
    		echo $html;
    }
    
    add_filter('uwpqsf_deftemp_query','insert_date_to_query','',3);
    function insert_date_to_query($args,$id,$getdata){
    
    	 $args['date_query'] = array(
    		  'after'     => array(
    				'year' => $getdata['date']['from-year'],
    				'month' => $getdata['date']['from-month'],
    				'day' => '1'
    		  ),
    		  'before'    =>  array(
    				'year' => $getdata['date']['to-year'],
    				'month' => $getdata['date']['to-month'],
    				'day' => '31'
    		  ),
    		  'inclusive' => true
    	 );
    
    return $args;
    }

    Filters

    how do i get it to show what the user searched for in the search results. is there is way to get the “value” and “selected” to update on the search result page?

    • This reply was modified 8 years, 11 months ago by mrspabs.
Viewing 6 replies - 1 through 6 (of 6 total)

The topic ‘Searching by date range’ is closed to new replies.