0

add_shortcode( 'job_search', 'job_search' );
function job_search($atts){
 $taxonomy = "job_listing_type";
    $terms = get_terms($taxonomy, array(
            "orderby"    => "name",
            "hide_empty" => false
        )
    );
 $hierarchy = _get_term_hierarchy($taxonomy);
?>
 <form action="" method="get" class="activity_filter">
   <div class="job-type-row">
         <label for="search_location"><?php esc_html_e( 'Job Type', 'wp-job-manager' ); ?></label>
    <select name="job_listing_type" id="job_listing_type" class="job_listing_type">
     <option value="">Select Job Type</option>
           <?php
               /** Loop through every term */
               foreach($terms as $term) {
                   /** Skip term if it has children */
                   if($term->parent) {
                       continue;
                   }
                   $selected = ($term->slug==$_GET['job_listing_type']) ? "selected=true" : "" ;
                   echo '<option '.$selected.' value="' . $term->slug . '">' . $term->name . '</option>';
                   /** If the term has children... */
                   if($hierarchy[$term->term_id]) {
                       /** ...display them */
                       foreach($hierarchy[$term->term_id] as $child) {
                           /** Get the term object by its ID */
                           $child = get_term($child, "category");
                           $selected = ($term->slug==$_GET['job_listing_type']) ? "selected=true" : "" ;
                           echo '<option '.$selected.' value="' . $term->slug . '"> - ' . $child->name . '</option>';
                       }
                   }
               }
           ?>
       </select>
  </div>
   <div class="search_location">
   <label for="search_location"><?php esc_html_e( 'Location', 'wp-job-manager' ); ?></label>
   <input type="text" name="search_location" id="search_location" placeholder="<?php esc_attr_e( 'Location', 'wp-job-manager' ); ?>" value="<?php echo esc_attr( @$_GET['search_location'] ); ?>" />
  </div>
  <div class="search_categories salary">
        <label for="search_categories"><?php _e( 'Search Salary Amounts', 'wp-job-manager' ); ?></label>
         <select name="filter_by_salary" id="filter_by_salary">
    <option value="0">Select Expected Salary</option>
    <option value="30,000 - 49,999">$30,000 - $49,999</option>
    <option value="50,000 - 69,999">$50,000 - $69,999</option>
    <option value="70,000 - 89,999">$70,000 - $89,999</option>
    <option value="90,000 - 109,999">$90,000 - $109,999</option>
    <option value="110,000 - 129,999">$110,000 - $129,999</option>
    <option value="130,000 - 149,999">$130,000 - $149,999</option>
    <option value="150,000+">$150,000 +</option>
   </select>
     </div>
     <div class="search_categories years">
        <label for="search_categories"><?php _e( 'Years of experience', 'wp-job-manager' ); ?></label>
         <select name="filter_by_experience" id="filter_by_experience">
    <option value="">Years of experience</option><option value="0">0</option><option value="1-2">1-2</option><option value="2-5">2-5</option><option value="5-10">5-10</option><option value="10+">10+</option>
   </select>
     </div>
     <div class="search_categories education">
        <label for="education"><?php _e( 'Select Job Education', 'wp-job-manager' ); ?></label>
         <select name="education" id="education">
     <option value="">Select Job Education</option>
     <option value="Less than High School">Less than High School</option>
     <option value="High School Diploma">High School Diploma</option>
     <option value="College">College</option>
     <option value="Associate’s Degree">Associate’s Degree</option>
     <option value="Bachelor’s Degree">Bachelor’s Degree</option>
     <option value="Professional or Doctorate">Professional or Doctorate</option>
   </select>
     </div>
   <p>
     <input type="submit" value="Search" /> <a href="<?php the_permalink();?>" class="reset">Reset</a>
   </p>
 </form>
<?php $query_args = array(
  'post_type' => 'job_listing',
  'posts_per_page'    => -1,
  'orderby'           => 'date',
  'order'             => 'DESC',
 );
if($_GET['filter_by_experience']){
  $query_args['meta_query'][] = array(
                 'key'     => 'years_experience',
                 'value'   =>  $_GET['filter_by_experience'],
                 'compare' => '=',
             );
}
if($_GET['search_location']){
  $query_args['meta_query'][] = array(
                 'key'     => '_job_location',
                 'value'   =>  $_GET['search_location'],
                 'compare' => 'LIKE',
             );
}
if($_GET['filter_by_salary']){
  $query_args['meta_query'][] = array(
                 'key'     => '_job_salary',
                 'value'   =>  $_GET['filter_by_salary'],
                 'compare' => 'LIKE',
             );
}
if($_GET['education']){		
  $query_args['meta_query'][] = array(
                 'key'     => '_education',
                 'value'   =>  $_GET['education'],
                 'compare' => 'LIKE',
             );
}	
if($_GET['job_listing_type']){		
  $query_args['tax_query'][] = array(
                array(
               'taxonomy' => 'job_listing_type',
               'field'    => 'slug',
               'terms'    => $_GET['job_listing_type'],
           ),
         );
}
//$jobs = get_job_listings( $query_args );
$jobs = new WP_Query($query_args);
echo ' <div class="job_listings">';
 if (  $jobs->have_posts() ) { ?>
 <ul class="job_listings">
   <?php while ( $jobs->have_posts() ) : $jobs->the_post(); ?>
     <?php //$country = get_post_meta(get_the_ID(), 'geolocation_country_short', true); ?>
    <?php
        get_job_manager_template_part( 'content-widget', 'job_listing' );
   ?>
 <?php endwhile; ?>
 </ul> <?php
 wp_reset_postdata();
 }else{
  echo '<p class="no-job">No Jobs Found!</p>';
 }?>
</div>
<script>
 jQuery('#filter_by_salary option[value="<?php echo $_GET['filter_by_salary'];?>"]').attr("selected", "selected");
 jQuery('#education option[value="<?php echo $_GET['education'];?>"]').attr("selected", "selected");
 jQuery('#filter_by_experience option[value="<?php echo $_GET['filter_by_experience'];?>"]').attr("selected", "selected");
</script>
 <?php 
}

Jagdish Sarma Asked question June 9, 2022
Add a Comment