This is very basic WordPress setting. Simply head over to the Settings ā General page in your WordPress admin area. Scroll down to the āMembershipā section and check the box next to āAnyone can registerā option.
Author Archive
Editing Resume Submission Fields
There are three main ways to customiseĀ resume fields:
- 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.
- Use a 3rd party plugin such asĀ https://plugins.smyl.es/wp-job-manager-field-editor/ which has a UI for field editing.
- 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; }
Remove the Preview Step
You may want to simplify the job submission process by removing the preview step.
To do so, simply add the following code to yourĀ functions.phpĀ file or even better, use a plugin such asĀ Code Snippets:
<?php /** * Remove the preview step. Code goes in theme functions.php or custom plugin. * @param array $steps * @return array */ function custom_submit_job_steps( $steps ) { unset( $steps['preview'] ); return $steps; } add_filter( 'submit_job_steps', 'custom_submit_job_steps' ); /** * Change button text (won't work until v1.16.2) */ function change_preview_text() { return __( 'Submit Job' ); } add_filter( 'submit_job_form_submit_button_text', 'change_preview_text' ); /** * Since we removed the preview step and it's handler, we need to manually publish jobs * @param int $job_id */ function done_publish_job( $job_id ) { $job = get_post( $job_id ); if ( in_array( $job->post_status, array( 'preview', 'expired' ) ) ) { // Reset expirey delete_post_meta( $job->ID, '_job_expires' ); // Update job listing $update_job = array(); $update_job['ID'] = $job->ID; $update_job['post_status'] = get_option( 'job_manager_submission_requires_approval' ) ? 'pending' : 'publish'; $update_job['post_date'] = current_time( 'mysql' ); $update_job['post_date_gmt'] = current_time( 'mysql', 1 ); wp_update_post( $update_job ); } } add_action( 'job_manager_job_submitted', 'done_publish_job' );
You may need to remove the first line from the code.
Basically this does a few things:
- Remove the preview step
- Change preview text to āSubmit Jobā
- Manually publish job (as the preview handler normally does this)
Adding Jobs via Admin
TheĀ Add NewĀ link, under theĀ Job ListingsĀ menu item in admin, will show theĀ Add Job ListingĀ page.
This should look familiar to you if youāve used WordPress posts and pages before.
Enter the job title and description
First fill our the ājob position titleā field at the top with the name of the job you are listing. This is the post title.
Next, beneath that youāll see a visual editor which you can add the job description in. This is the post content.
Set job meta data
Next, look at theĀ job listing dataĀ panel below. This is where you enter job and company details for the listing.

The fields include:
- Job LocationĀ ā Enter the location of the Job being as detailed as you wish. Leave blank if the job is a telecommuting position.
- Application email/URLĀ ā You may enter a URL if the job can be applied for via a website, or enter an email address for applicants to send their application to.
- Company name
- Company website
- Company taglineĀ ā Tagline should be a short description of the company.
- Company TwitterĀ ā Twitter name, e.g. @company
- Company LogoĀ ā Upload a logo, or enter the logoās URL here.
- Position FilledĀ ā check the checkbox if the job is filled/not accepting any more applicants
- Feature this job listingĀ ā check this checkbox to feature the job. When listing jobs it will always appear first.
- Job expiresĀ ā The expiry date for this job in yyyy-mm-dd format.
Set category and job type
Finally, in the sidebar you will see two taxonomies; job categories and job types. SelectĀ oneĀ job type, and as many categories as you wish. This works the same as with posts.

Publish your listing
When you are done, hitĀ publishĀ to make the Job Listing live.
When published, the job listingās expiry date will be set based on theĀ Listing durationĀ option in settings unless you explicitly set it yourself.
Managing Job types and categories
From the admin menu you will also see links toĀ Job CategoriesĀ andĀ Job Types. These two sections let you add, edit and delete terms.
These sections work in exactly the same way as Post categories so seeĀ Posts Categories ScreenĀ for reference.
Require an active job package to view resumes
This tutorial applies to users running bothĀ Job Manager ResumesĀ andĀ WC Paid ListingsĀ and lets you restrict access to the resumes portion of your site to users with an active job package only.
Configure Resume Access
The first step is to configure resumes for capability based access. Go toĀ Resumes > Settings > Resume VisibilityĀ and for each permission enter āhas_active_job_packageā.
Add a snippet
Use code snippet below into theme functions.php file, or even better, with a plugin such as Code Snippets.
// Hook into user_has_cap filter. This assumes you have setup resumes to require the capability 'has_active_job_package' add_filter( 'user_has_cap', 'has_active_job_package_capability_check', 10, 3 ); /** * has_active_job_package_capability_check() * * Filter on the current_user_can() function. * * @param array $allcaps All the capabilities of the user * @param array $cap [0] Required capability * @param array $args [0] Requested capability * [1] User ID * [2] Associated object ID */ function has_active_job_package_capability_check( $allcaps, $cap, $args ) { // Only interested in has_active_job_package if ( empty( $cap[0] ) || $cap[0] !== 'has_active_job_package' || ! function_exists( 'wc_paid_listings_get_user_packages' ) ) { return $allcaps; } $user_id = $args[1]; $packages = wc_paid_listings_get_user_packages( $user_id, 'job_listing' ); // Has active package if ( is_array( $packages ) && sizeof( $packages ) > 0 ) { $allcaps[ $cap[0] ] = true; } return $allcaps; }
What does it do? When WordPress checks if the user has the correct capability to view resumes, it checks the users packages. If they have a package, they are given the capability dynamically.
Enable comments/reviews for resumes
You can enable comments in Resume -> Settings -> Enable comments on Resumes
Jobs/Resumes or Categories leading to 404 page
If you are encountering 404 error pages there are a few things it could be. You should try the following in order:
- Ensure it is not a permalink issue by going toĀ Settings > PermalinksĀ from your WordPress dashboard and pressing the āSaveā button.
- If that didn’t work try disabling other installed plugins and then repeating step one. If it is a plugin conflict you can then either leave the problem plugin disabled or contact the author for assistance.
- Switch to a default theme (like Twenty Twenty) to rule out a conflict, again repeating step one after doing so.
By this point most problems should have been identified.
Employer and Candidate User Roles
Employer Role
Employers have access to theĀ Jobs Dashboard. On this page, they can āviewā, āeditā, āmark as filledā, and ādeleteā their jobs. The job dashboard page only shows job details that have been posted by the user who is currently logged in. Other users such as candidates or visitors to the site cannot access the jobs dashboard page or make any changes to jobs they did not post.
If you have theĀ Applications addonĀ installed, then the job dashboard also shows the number of applications per job listing in a new column. Clicking the number in that column (when there are applications) will reveal the application list.
The āemployerā role doesnāt otherwise give the user any special capabilities. It is mainly used by themes or plugins. You can also use it to restrict certain views to the āemployerā role, as describedĀ here.
If you need to customize the capabilities of the āemployerā role, youāll need to use a plugin such asĀ User Role Editor.
Candidate Role
This role is applied if a user registers on your site while posting a resume. The other details for the ācandidateā role are similar to that of the employer role; no special abilities other than access to a personal Candidate Dashboard, which displays the userās resumes.
Google Job Search Integration
It includes the proper schema for making your job listings compatible with the Google Job Search requirements, but it doesnāt automatically submit your jobs to Google. Google will eventually crawl your site and find the jobs without any action on your part, similar to what it does with sitemaps. If you like, you can try using a SEO plugin to help you with automatic submission of your jobs to Google to speed up the process. Any questions about this would need to be directed to the support for that plugin.
You can use theĀ Google Search ConsoleĀ to check that there arenāt any issues with your siteās structured data.
Documentation on fixing structured data issues is here, if anything shows up when you check.
Jobs Shortcode References
You can use several shortcodes to display jobs and forms. These are listed below.
The [jobs] shortcode outputs a list of your jobs

This shortcode takes the following arguments:
per_page
Ā ā Defaults to the āper pageā option in settings. This controls how many jobs get listed per page.orderby
Ā ā Defaults to āfeaturedā. Supports title, ID, name, date, modified, rand, featured, and rand_featured (random but keeps featured at top).order
Ā ā Defaults to ādescā. Can be set to āascā or ādescā to choose the sorting direction.show_filters
ā shows native WP Job Manager filters above the job list but it’s recommended to disable them usingshow_filters="false"
show_pagination
Ā ā Defaults to false. Enable this to show numbered pagination instead of the āload more jobsā link.show_categories
Ā ā Defaults to true when categories are enabled. If enabled, the filters will also show a dropdown letting the user choose a job category to filter by.categories
Ā ā Comma separate slugs to limit the jobs to certain categories. This option overrides āshow_categoriesā if both are set.job_types
Ā ā Comma separate slugs to limit the jobs to certain job types.selected_job_types
Ā ā Comma separate slugs toĀ select by default.location
Ā ā Enter a location keyword to search by default.keywords
Ā ā Enter a keyword to search by default.featured
Ā ā Set to true to show only featured jobs, false to show no featured jobs, or leave out entirely to show both (featured first).filled
Ā ā Set to true to show only filledĀ jobs, false to show no filledĀ jobs, or leave out entirely toĀ respect the default settings.post_status
Ā ā Set to āpublishā to display active jobs, set to āexpiredā to show expired jobs.
If the URL of the page contains a query string and location or keywords is set, the values in the query string will populate the location and keywords fields instead of the above options.
Examples
Show 12 of the most recent jobs without filters and pagination:
[jobs per_page="12" show_filters="false"]
Show 20 jobs at a time, ordered by title, with categories disabled:
[jobs per_page="20" orderby="title" show_categories=false]