E-Commerce WordPress Solutions

Customizing WP Jobs Manager: Personalized Search Options

A job board lives on search, and the default WP Job Manager options only go so far. Here is how to customize it with personalized search, so candidates find the right roles fast and your board feels professional.

Ramandeep Singh Ramandeep Singh 6 min read
Customizing WP Jobs Manager: Personalized Search Options

Wp-jobs-manager

One of the fastest ways of setting up a jobs listing website is via WordPress. While there several ways in which this could be done with WordPress, WP Job Manager is just the right plugin for the job, pun intended.

A lightweight and a fluid addon to WordPress, WP Job Manager is a shortcode based plugin that adds a job-board like functionality to your WordPress site. This is an especially unique approach, the use of shortcodes implies that the plugin is extremely compatible with all themes and can be set up with minimal effort.

WP Job Manager provides a default job search bar where you type in your category, location, and job tags, and hit search.

screenshot-jobtribe

And you get the results on the same page.

This may not be desirable many times. The homepage is sacred, it is your entire website summed up in a single page. The face of your business. Would you really want a clutter of search results right in your home?

What if you want your job search bar on your homepage and the search results to be displayed on another page?

A little bit of custom coding and it’s a piece of cake. Here’s what you’d need to do.

Step 1

Firstly, you’d need to create the shortcode for displaying the search form (the search bar, location selector and the search button) on any required page. The code for the same would be:

add_shortcode('search_form','custom_job_form');?>

Step 2

Next, we define a callback that would employ the shortcode created above and display the search form as follows:

<?php
function custom_job_form()
{
   $args = array(
       'hide_empty'             => false,
       'fields'                 => 'id=>name',
   );
   $action_page_id = get_option('job_manager_jobs_page_id');
   $action_page_url = get_page_link($action_page_id);
   $arr_get_data = array_filter($_GET);
   $job_regions = get_terms('job_listing_region', $args);
   $keywords = "";
   if(!empty($arr_get_data)) {
     $keywords   = isset($arr_get_data['search_keywords'] ) ? $arr_get_data['search_keywords'] : "";
     $location   = isset( $arr_get_data['search_location'] ) ? $arr_get_data['search_location'] : "";
     $comapny_name   = isset( $arr_get_data['search_company'] ) ? $arr_get_data['search_company'] : "";
     $disability     = isset( $arr_get_data['search_disability'] ) ? $arr_get_data['search_disability'] : "";
   }

   $s_categories = get_option( 'resume_manager_enable_categories' );

   ob_start();
   ?>
   <script type="text/javascript">
   jQuery(document).ready(function() {
     jQuery('#search_location').chosen();
     jQuery('.chosen-single').css("border-radius","6px");
     jQuery('.chosen-single').css("box-shadow","none");
   });

   </script>
   <form class="wdm_job_filters" method="GET" action="<?php echo $action_page_url; ?>" name="jobify_search_jobs" id="jobify_search_jobs" onsubmit="jQuery(this).unbind('submit');">

       <div class="search_jobs wdm_search_jobs">
        div class="row wdm_row">
               <div class="<?php echo $s_categories ? 'col-md-6' : 'col-md-6'; ?> wdm_search_keywords wdm_form_div">
                   <label for="search_keywords"><?php _e( 'Keywords', 'jobify' ); ?></label>
                   <input type="text" name="search_keywords" id="search_keywords" placeholder="<?php esc_attr_e( 'All Jobs', 'jobify' ); ?>" value="<?php echo esc_attr( $keywords ); ?>" />

              </div>
           <?php

           if( !empty( $job_regions ) ) {
           ?>
               <div class="<?php echo $s_categories ? 'col-md-6' : 'col-md-6'; ?> search_location wdm_form_div">
                  <label for="search_location"><?php _e( 'Location', 'jobify' ); ?></label>
               <div class="select search_category">
               <select class="postform select" name="search_location" id="search_location">
               <option value=""><?php _e( 'Any Location', 'jobify' ); ?></option>

               <?php

                   foreach ($job_regions as $loc_key => $loc_val ) {
                   echo "<option value='".$loc_key."' ".$selected.">".$loc_val."</option>";
                   }
               ?>
               </select>
               </div>
               </div>
<?php
         }
?>
         <div class="col-md-6 wdm_form_div wdm_submit_div">
           <label for="search_submit">Search</label>
           <input type="submit" name="submit_jobify_form" id="submit_jobify_form" class ="wdm-form-submit"value="<?php echo esc_attr_e( 'Search', 'jobify' ); ?>" />
         </div>

                   </div>
           </div>
      </form>
 <?php
 return ob_get_clean();
}
?>

So when a user clicks on the search bar, he/she would be redirected to the page where we placed the afore-mentioned shortcode, along with the values entered by the user.

Step 3

With the shortcode and the callback in place, you now need to set a page on which the results ought to be displayed. The Job Listings Page option under the WP Job Manager settings lets you choose any one of existing pages (where you have the shortcode implemented) as the page where you want the result to be displayed.

jobmanager-screenshot

Step 4

On the selected page, the values are retrieved through the PHP code and are sent to the javascript code, which in turn will handle the data on the page.

PHP Code:

<?php

add_action('job_manager_job_filters_start','load_js');
function load_js()

{
 if(isset($_GET['search_location'])) {
   $arr_data= array();
   if(isset($_GET['search_location']))
   {
       $arr_data['search_location'] = $_GET['search_location'];
   }
   wp_register_script('wdm_process_script', get_stylesheet_directory_uri() .'/assets/js/OnLoad-process-url.js', array('jquery'));
   wp_enqueue_script('wdm_process_script');
   wp_localize_script('wdm_process_script','wdm_obj', $arr_data);

 }
}
?>

Step 5

The values entered by user needs to be wrapped in wdm_obj and sent to javascript code using localize_script. The javascript code is written in javascript file OnLoad-process-url.js and is as follows:

jQuery(document).ready(function() {
 if (jQuery(".job_listings").length > 0) {
     function UpdateRegionFunction() {
       setTimeout(
         function(){          jQuery("#search_region").val(''+wdm_obj.search_location+'');
           jQuery(".chosen-single").trigger('change');
           jQuery('#search_region').trigger('chosen:updated');
           },
         2000);
   }
   if(!(jQuery.isEmptyObject(wdm_obj)))
   {
     UpdateRegionFunction();
   }
 }
});

That’s about it. As is evident from the screenshot below, you now have a separate page of your choice where you can display the search results for jobs.

screenshot-jobtribe

I hope this tutorial helps. Not what you’re looking for? We can help! Write to us, all you gotta do is fill in a simple form. We’d love to hear you out.

Get a FREE Consultation

Let's build something that lasts.

Share what's on your mind — a clear brief, a half-formed idea, or just a sense that something needs to change. We'll listen first, ask the right questions, and point you toward what's actually worth building.

We take on a handful of projects each quarter,ones where we can truly make a difference.

  • Receive a human response within 24 hours
  • Get a detailed scope and quote upfront
  • We're happy to sign an NDA upon request

    Free 30-Min Strategy Call

    Your Name *

    Your Phone No *

    Work Email *

    Your Budget*

    Project Details *