There are three main ways to customiseĀ  resume fields:

  1. For simple text changes, using a localisation file or a plugin such asĀ the Say What Plugin.Ā See Translating WP Job ManagerĀ for more information.
  2. Use a 3rd party plugin such asĀ https://plugins.smyl.es/wp-job-manager-field-editor/ which has a UI for field editing.
  3. Use the WordPress hooks (filters) which are explained below.

WP Job Managerā€™s approach to allowing customisation of itā€™s forms is to use filters. In WordPress, filters essentially allow you to ā€˜filterā€™ data through your own custom php functions which return a different ā€˜filteredā€™ result. Any custom code can go in yourĀ themeĀ functions.php file.


Editing resume fields works in a similar manner toĀ editing job submission fieldsĀ ā€“ you can use filters and custom functions. Any custom code should be added as a snippet to a plugin likeĀ Code Snippets,Ā which will help ensure your site doesnā€™t crash due to buggy code, or be overwritten during updates.

Editing fields on the frontend

Editing resumeĀ submission fields is possible via theĀ submit_resume_form_fieldsĀ filter. Adding some code will allow you to edit various fields, or add new ones.

See the below example which demonstrates how to change a fieldā€™s label:

// Add your own function to filter the fields
add_filter( 'submit_resume_form_fields', 'custom_submit_resume_form_fields' );

// This is your function which takes the fields, modifies them, and returns them
function custom_submit_resume_form_fields( $fields ) {

// Here we target one of the job fields (candidate name) and change it's label
$fields['resume_fields']['candidate_name']['label'] = "The Candidate Name";

// And return the modified fields
return $fields;
}


Removing a field

If youā€™d like to remove a field from the form, youā€™d simply unset it using the same filter.

See the below example where the Candidate Title is being removed:

add_filter( 'submit_resume_form_fields', 'remove_submit_resume_form_fields' );

function remove_submit_resume_form_fields( $fields ) {

// Unset any of the fields you'd like to remove - copy and repeat as needed
unset( $fields['resume_fields']['candidate_title'] );

// And return the modified fields
return $fields;
}


Adding a field

Similarly, you can add a field just as easily. Hereā€™s an example showing how to add a new text input to the form:

// Add field to admin
add_filter( 'resume_manager_resume_fields', 'wpjms_admin_resume_form_fields' );
function wpjms_admin_resume_form_fields( $fields ) {

$fields['_candidate_color'] = array(
'label' => __( 'Favourite Color', 'job_manager' ),
'type' => 'text',
'placeholder' => __( 'Blue', 'job_manager' ),
'description' => '',
'priority' => 1
);

return $fields;

}

// Add field to frontend
add_filter( 'submit_resume_form_fields', 'wpjms_frontend_resume_form_fields' );
function wpjms_frontend_resume_form_fields( $fields ) {

$fields['resume_fields']['candidate_color'] = array(
'label' => __( 'Favourite Color', 'job_manager' ),
'type' => 'text',
'required' => true,
'placeholder' => '',
'priority' => 1
);

return $fields;

}

// Add a line to the notifcation email with custom field
add_filter( 'apply_with_resume_email_message', 'wpjms_color_field_email_message', 10, 2 );
function wpjms_color_field_email_message( $message, $resume_id ) {
$message[] = "\n" . "Favourite Color: " . get_post_meta( $resume_id, '_candidate_color', true );
return $message;
}

Note:Ā You can change the ā€˜priorityā€™ of the field to position it where you want it. The higher the number, the lower down the form it will appear.

You could use a different field type likeĀ selectĀ orĀ checkbox, just make sure to follow the same method to add those field types that WP Job Manager uses.

Note:Ā To add it to the preview field youā€™d want to look at adding it to the template files, likeĀ content-single-resume.php, with some code like:

<? php echo get_post_meta( $post->ID, '_candidate_color', true ); ?>

Making the ā€˜Resume Fileā€™ field required

A common request is to require a resume file to be added. Simply use the following code to make it so:

// Add your own function to filter the fields
add_filter( 'submit_resume_form_fields', 'resume_file_required' );

// This is your function which takes the fields, modifies them, and returns them
function resume_file_required( $fields ) {

// Here we target one of the job fields (candidate name) and change it's label
$fields['resume_fields']['resume_file']['required'] = true;

// And return the modified fields
return $fields;
}

Adding a field to a repeated section

To add a field to one of the resumeā€™s repeated sections (Education, Experience), the process is almost the same as adding a single field. Hereā€™s an example of adding a ā€œFavorite Teacherā€ field to each Education section.


Adding the field to admin

Note that we use theĀ 'resume_manager_resume_education_fields'Ā filter instead ofĀ 'resume_manager_resume_fields'.

Itā€™s also important to include aĀ 'name' entry as shown:

// Add field to admin
add_filter( 'resume_manager_resume_education_fields', 'wpjms_admin_resume_form_fields' );
function wpjms_admin_resume_form_fields( $fields ) {

$fields['favorite_teacher'] = array(
'label' => __( 'Favourite Teacher', 'job_manager' ),
'name' => 'resume_education_teacher[]',
'type' => 'text',
'placeholder' => '',
'description' => '',
'priority' => 1
);

return $fields;

}

Adding the field to the frontend form

This code is almost the same as adding a single field to the form, you just need to includeĀ ['candidate_education']['fields']Ā to specify where this field should go.

// Add field to frontend
add_filter( 'submit_resume_form_fields', 'wpjms_frontend_resume_form_fields' );
function wpjms_frontend_resume_form_fields( $fields ) {
	
	$fields['resume_fields']['candidate_education']['fields']['favorite_teacher'] = array(
	    'label' => __( 'Favourite Teacher', 'job_manager' ),
	    'type' => 'text',
	    'required' => true,
	    'placeholder' => '',
	    'priority' => 1
	);

	return $fields;
	
}