Advertisement
Guest User

Salary Filter

a guest
Jul 27th, 2017
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.17 KB | None | 0 0
  1. add_action( 'job_manager_job_filters_search_jobs_end', 'filter_by_salary_field' );
  2. function filter_by_salary_field() {
  3.     ?>
  4.     <div class="search_categories" style="padding-left: .5em !important;padding-right: 0em !important;">
  5.         <label for="search_categories"><?php _e( 'Salary', 'wp-job-manager' ); ?></label>
  6.         <select name="filter_by_salary" class="job-manager-filter">
  7.             <option value=""><?php _e( 'Any Salary', 'wp-job-manager' ); ?></option>
  8.             <option value="upto10"><?php _e( 'Up to £10,000', 'wp-job-manager' ); ?></option>
  9.             <option value="15000-20000"><?php _e( '£15,000 to £20,000 (£7.50 to £9.60ph)', 'wp-job-manager' ); ?></option>
  10.             <option value="20000-25000"><?php _e( '£20,000 to £25,000', 'wp-job-manager' ); ?></option>
  11.             <option value="over40"><?php _e( '£40,000+', 'wp-job-manager' ); ?></option>
  12.         </select>
  13.     </div>
  14.     <?php
  15. }
  16. /**
  17.  * This code gets your posted field and modifies the job search query
  18.  */
  19. add_filter( 'job_manager_get_listings', 'filter_by_salary_field_query_args', 10, 2 );
  20. function filter_by_salary_field_query_args( $query_args, $args ) {
  21.     if ( isset( $_POST['form_data'] ) ) {
  22.         parse_str( $_POST['form_data'], $form_data );
  23.         // If this is set, we are filtering by salary
  24.         if ( ! empty( $form_data['filter_by_salary'] ) ) {
  25.             $selected_range = sanitize_text_field( $form_data['filter_by_salary'] );
  26.             switch ( $selected_range ) {
  27.                 case 'upto10' :
  28.                     $query_args['meta_query'][] = array(
  29.                         'key'     => '_job_salary',
  30.                         'value'   => '10000',
  31.                         'compare' => '<',
  32.                         'type'    => 'NUMERIC'
  33.                     );
  34.                 break;
  35.                 case 'over40' :
  36.                     $query_args['meta_query'][] = array(
  37.                         'key'     => '_job_salary',
  38.                         'value'   => '40000',
  39.                         'compare' => '>=',
  40.                         'type'    => 'NUMERIC'
  41.                     );
  42.                 break;
  43.                 default :
  44.                     $query_args['meta_query'][] = array(
  45.                         'key'     => '_job_salary',
  46.                         'value'   => array_map( 'absint', explode( '-', $selected_range ) ),
  47.                         'compare' => 'BETWEEN',
  48.                         'type'    => 'NUMERIC'
  49.                     );
  50.                 break;
  51.             }
  52.             // This will show the 'reset' link
  53.             add_filter( 'job_manager_get_listings_custom_filter', '__return_true' );
  54.         }
  55.     }
  56.     return $query_args;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement