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;
	
}