Author Archive

Resume Manager: Template tags

the_candidate_location

the_candidate_location( $map_link = true, $post = null )

Uses `get_the_candidate_location` and outputs the candidates location including an optional link to google maps.

the_candidate_title

the_candidate_title( $before = ”, $after = ”, $echo = true, $post = null )

Uses `get_the_candidate_title` to output the candidates current or desired job title.

the_candidate_photo

the_candidate_photo( $size = ‘full’, $default = null, $post = null )

Uses `get_the_candidate_photo` to output the candidates photo (or a placeholder).

the_resume_category

the_resume_category( $post = null )

Uses `get_the_resume_category` to output the name of the category the resume was posted in.

the_resume_status

the_resume_status( $post = null )

Uses `get_the_resume_status` to output the resumes current status e.g. active.

Resume Manager

Resume Manager

Resume Manager is a paid plugin for WP Job Manager which provides you with a resume submission form, resume listings, and a candidate dashboard. Resumes created with Resume Manager are used to apply to jobs listed on a WP Job Manager site.

Installation

To install this plugin, please refer to the guide here: https://wordpress.org/support/article/managing-plugins/#installing-plugins

Create Pages with Shortcodes

After installation, the first thing you’ll need to do is add shortcodes to new pages to create your Resume Manager-specific functionality.

  • [submit_resume_form]: Front-end resume submission form allowing users to submit resumes
  • [candidate_dashboard]: Allows logged-in users to manage, edit, delete, and create resumes
  • [past_applications]: Allows candidates to view past applications (requires Applications plugin)
  • [resumes]: Outputs resumes to a page, visible only to administrators and employers by default

Settings and Configuration

The settings page is found in Resumes > Settings.

Resume Listings

  • Resumes per page display settings
  • Category and skills enablement
  • Resume upload and file deletion options
  • Personal data erasure settings

Resume Submission

  • Account requirement options
  • Account creation and registration settings
  • Approval and editing workflows
  • Listing duration and auto-hide settings
  • ReCAPTCHA protection

Candidate Dashboard

Create a new page and add the [candidate_dashboard] shortcode to allow candidates to access and manage their resumes.

Resume Visibility

By default, resumes are visible only to employers and administrators. Configure role-based access restrictions in visibility settings.

Email Notifications

Configure admin and employer notifications for new resumes and applications. Customize plain text or rich text email formats.

The Resume Submission Process

Step 1 allows users to input resume details including name, contact information, summary, categories, skills, websites, education, and experience. Step 2 provides a preview, and Step 3 shows confirmation upon submission.

Administrating and Creating Resumes

Resumes can be approved, edited, viewed, or submitted manually from the Resumes menu in WordPress admin.

Applying to Jobs with Resumes

Enable the “Allow candidates to apply to jobs with resumes” setting to let logged-in users apply using their online resume instead of email addresses.

Troubleshooting

Ensure latest versions are installed and check for theme/plugin conflicts. For [candidate_dashboard] issues, verify the shortcode is on a page and you’re logged in as a candidate user.

Email Notifications

Email Notifications

WP Job Manager Email Notifications are managed via Job Listings > Settings > Email Notifications

By default, an email will be sent to the site administrator when a job listing is submitted or updated via the front end (adding/updating jobs via the back end is not recommended).

From the Email Notification settings you are able to change the recipient for the emails and set the email format to either plain text or rich text. You can also disable them by unchecking the box next to each email notification.

The email notification settings for Expiring Job Notices also have the option to specify the number of days before expiry that the emails should be sent.

Third-Party Plugins and Advanced Customization

For more complex email solutions, you will need to use a third-party plugin. Here are a few recommendations:

  • The WP Job Manager Emails plugin provides native support and includes email templates
  • The Post Status Notifier sets up notifications when the status of a job listing changes
  • Or, if you feel comfortable with editing code, you can add custom code to send notification emails

Our add-ons may also send notifications:

  • Applications send a confirmation email to both employers and candidates
  • Job Alerts sends emails to candidates
  • Resume Manager will email new resume submissions to the administrator if enabled
  • WC Paid Listings does not send emails; WooCommerce does depending on your settings

Email Templates

Template files handle WP Job Manager email notifications. You can override the email templates by copying them to your theme and making edits there, for example: Copy from wp-job-manager/templates/emails/employer-expiring-job.php to yourtheme/job_manager/emails/employer-expiring-job.php

Troubleshooting

Emails are not sent

WP Job Manager uses the wp_mail() function – a core WordPress function – to send emails. If emails aren’t being sent/received, the issue relates to your web host’s core email function, not WP Job Manager.

With Resume add-on, Application Email notifications are not sent

If you have both Applications and Resume add-ons and force applicants to apply with a resume, applications process through Resume Manager, not Applications. Configure candidates to apply with the Applications form by disabling the Force Apply with Resume option under Resumes > Settings > Apply With Resume.

Job Tags

Overview

Using the Job Tags plugin you can add a new ‘job tags’ field to the submit process, show jobs filtered by tag via shortcodes, and add tag filtering to the standard jobs shortcode.

Installation

To install this plugin, please refer to the guide here: https://wordpress.org/support/article/managing-plugins/#installing-plugins

Setup

After installation, head over to Job Listings > Settings to configure the plugin.

  • Job Listings > Enable Tag Archives – Enabling tag archives will make job tags link through to an archive of all jobs with said tag.
  • Job Submission > Maximum Job Tags – Enter a number to limit the amount of tags users can define when submitting a job.
  • Job Submission > Tag Input – Choose from Text Box, Multiselect, or Checkboxes for tag input method.

Modifications to the Job Submission Flow

This plugin adds a ‘Job Tags’ field to the Job Submission Process. Tags of 3 characters or fewer are forced to uppercase as abbreviations. Other tags become lowercase to prevent duplicates.

Tag Display

Job tags appear after the job description and are only linked if tag archives are enabled.

Tag Filters

The standard [jobs] shortcode is automatically enhanced with a tag filter section when at least one tag is assigned to a listing. Disable this by adding ‘show_tags=false’ to the shortcode.

The Tag Cloud Shortcode

Use the [job_tag_cloud] shortcode to display job tags. Tags are only linked when tag archives are enabled. Example: [job_tag_cloud orderby="count" number="10"]

The Jobs by Tag Shortcode

The [jobs_by_tag] shortcode outputs jobs matching specific tags. Accepts parameters like per_page, orderby, order, tag, and tags. Examples: [jobs_by_tag per_page="10" tag="your-tag"] or [jobs_by_tag per_page="10" tags="tag-1,tag-2"]

Editing User-Submitted Tags on an Existing Job

A known issue exists where the Job Tags block doesn’t display properly in the WordPress block editor. The workaround is to install the Classic Editor plugin to revert to the legacy editor.

Simple Paid Listings

Overview

Using the Simple Paid Listings plugin you can charge a single fee to list a job on your site using either Stripe or PayPal to collect the funds.

Note that this plugin does not allow coupons, discounts, or anything other than a simple “pay $X for job listing”. For additional capabilities, consider using WooCommerce Paid Listings instead.

Installation

To install this plugin, please refer to the guide at: https://wordpress.org/support/article/managing-plugins/#installing-plugins

Setup

After installation, head over to Job Listings > Settings > Paid Listings to configure your paid listings and gateways:

  • Listing Cost – Enter the cost of new listings, excluding currency symbols (e.g., 9.99)
  • Currency Code – Enter your desired currency code (USD for US Dollars, GBP for British Pounds Sterling)
  • Payment Gateway – Choose either Stripe Checkout or PayPal Standard

Stripe Checkout Settings

  • Secret Key – Obtain from Stripe; test mode requires keys prepended with sk_test_
  • Publishable Key – Obtain from Stripe; test mode requires keys prepended with pk_test_

PayPal Standard Configuration

  • PayPal Email – Your seller’s PayPal email address
  • PayPal Identity Token – Optional but recommended for Payment Data Transfer verification
  • PayPal Sandbox – Enable for testing without live payments

Job Submission Flow

The submission process is identical up to the preview page. On preview, the confirm button changes to “Pay for Listing”.

With Stripe Checkout

Clicking “Pay for Listing” opens the payment page. Upon successful payment, the job is marked paid and goes live or awaits approval based on your settings.

With PayPal Standard

Users are redirected to PayPal’s site for payment. After completion, they return to the job submission page.

Security/HTTPS

When using Stripe Checkout, set your Job Submission page to HTTPS.

Troubleshooting

Do not use Simple Paid Listings simultaneously with WooCommerce Paid Listings, as this causes unexpected behavior.

Applications: Limiting applications to a certain role

Please note: All code examples and plugin suggestions are provided for reference or guidance only, and we cannot guarantee that they will always work as expected. Our support policy does not include assistance with modifying or debugging code from any code examples, or providing support for any suggested 3rd-party plugins.

A common request is to limit the actual application form to a certain user role. This is possible with a small amount of customisation, as follows:

1. Override the Template File

Copy the plugin file wp-job-manager-applications/templates/application-form.php to YOURTHEME/wp-job-manager-applications/application-form.php. The version you copy to your theme will take priority.

2. Edit the Template File

Inside your newly copied file, you can use the current_user_can function to check if a user can apply.

At the top of the file add:

<?php if ( current_user_can( 'ROLE' ) ) : ?>

Replace ROLE with your desired role or capability, for example, ‘subscriber’.

At the end of the file add:

<?php else : ?>
Custom content here shown to users without access.
<?php endif; ?>

The application form will now only be visible to the users with permission.

Note: According to the WordPress codex on the current_user_can function, checking against roles rather than capabilities may produce unreliable results, so custom implementations cannot be guaranteed to work consistently.

GDPR Compliance

GDPR Compliance

WP Job Manager’s parent company, Automattic, is committed to GDPR compliance. For the most current information about Automattic and GDPR, visit their official support page.

WP Job Manager includes a “Delete Data on Uninstall” setting located under Job Listings > Settings > General that allows for data removal when the plugin is uninstalled.

About Individual Deletion or Extraction

It is important to note that WP Job Manager and its add-ons do not offer individual user data deletion or extraction features directly.

WordPress core manages user records. For information about WordPress and GDPR compliance tools, refer to:

  • GDPR Compliance Tools in WordPress
  • Roadmap: Tools for GDPR Compliance

Third-party plugins may be available to accomplish user deletion and data deletion if needed.

The “Delete Data on Uninstall” option removes employer and candidate roles but does not delete user accounts. User data for Resume Manager and Applications is stored in wp_posts and wp_postmeta tables. Removing file uploads first is recommended before deleting resume and application data to avoid complications.

Applications: Customising Application Statuses

Applications by default has the following statuses (these are custom post type statuses):

  1. New
  2. Interviewed
  3. Offer Extended
  4. Hired
  5. Archived
  6. Rejected

From version 1.7.0+ these statuses can be customised by using the filter job_application_statuses.

Adding a Status Example

This example adds a new status called ‘Example’. The code would be placed in your theme functions.php file or a custom plugin.

add_filter( 'job_application_statuses', 'add_new_job_application_status' );

function add_new_job_application_status( $statuses ) {
	$statuses['example'] = _x( 'Example', 'job_application', 'wp-job-manager-applications' );
	$statuses['another_example'] = _x( 'Another Example', 'job_application', 'wp-job-manager-applications' );
	$statuses['a_third_example'] = _x( 'A Third Example', 'job_application', 'wp-job-manager-applications' );
	return $statuses;
}

Removing a Status Example

This example removes the ‘offer extended’ status.

add_filter( 'job_application_statuses', 'add_new_job_application_status' );

function add_new_job_application_status( $statuses ) {
	unset( $statuses['offer'] );
	return $statuses;
}

WC Paid Listings: Give a free package to a new user

Please note that all code examples on this site are provided for reference/guidance only and we cannot guarantee that they will always work as expected. Our support policy does not include assistance with modifying or debugging code from any code examples, and they may be changed or removed if we find they no longer work due to changes in our plugins.

A common request is to give a free package to newly signed-up users. This can be done with a small snippet added to a plugin like Code Snippets:

add_action( 'user_register', 'give_wcpl_user_package_on_registration' );

function give_wcpl_user_package_on_registration( $user_id ) {
	global $wpdb;

	$wpdb->insert(
		"{$wpdb->prefix}wcpl_user_packages",
		array(
			'user_id'          => $user_id,
			'product_id'       => 0,
			'package_count'    => 0,
			'package_duration' => 30,
			'package_limit'    => 1,
			'package_featured' => 0,
			'package_type'     => 'job_listing'
		)
	);
}

Optionally you may want to only give a free package to employers. If that’s the case, use this instead:

add_action( 'user_register', 'give_wcpl_user_package_on_registration' );

function give_wcpl_user_package_on_registration( $user_id ) {
	global $wpdb;
	
	if ( wpjm_check_user_role( 'employer', $user_id ) ) {
		$wpdb->insert(
			"{$wpdb->prefix}wcpl_user_packages",
			array(
				'user_id'          => $user_id,
				'product_id'       => 0,
				'package_count'    => 0,
				'package_duration' => 30,
				'package_limit'    => 1,
				'package_featured' => 0,
				'package_type'     => 'job_listing'
			)
		);
	}
}

function wpjm_check_user_role( $role, $user_id = null ) {
    if ( is_numeric( $user_id ) ) {
		$user = get_userdata( $user_id );
    } else {
        $user = wp_get_current_user();
    }
    if ( empty( $user ) ) {
		return false;
    }
    return in_array( $role, (array) $user->roles );
}

Tutorial: Remove the Resume Preview Step

Note: All code examples on this site are provided for developer reference/guidance only and we cannot guarantee that they will always work as expected. Our support policy does not include assistance with modifying or debugging code from any code examples, and they may be changed or removed if we find they no longer work due to changes in our plugins.

To remove the Preview step during the resume submission process, add the following code to a plugin like Code Snippets:

/**
 * Remove the preview step when submitting resumes.
 * @param  array $steps
 * @return array
 */
add_filter( 'submit_resume_steps', function( $steps ) {
	unset( $steps['preview'] );
	return $steps;
} );

/**
 * Change button text.
 */
add_filter( 'submit_resume_form_submit_button_text', function() {
	return __( 'Submit Resume', 'wp-job-manager-resumes' );
} );

/**
 * Since we removed the preview step and it's handler, we need to manually publish resumes.
 * @param  int $resume_id
 */
add_action( 'resume_manager_update_resume_data', function( $resume_id ) {
	$resume = get_post( $resume_id );
	if ( in_array( $resume->post_status, array( 'preview', 'expired' ), true ) ) {
		delete_post_meta( $resume->ID, '_resume_expires' );
		$update_resume                  = array();
		$update_resume['ID']            = $resume->ID;
		$update_resume['post_status']   = get_option( 'resume_manager_submission_requires_approval' ) ? 'pending' : 'publish';
		$update_resume['post_date']     = current_time( 'mysql' );
		$update_resume['post_date_gmt'] = current_time( 'mysql', 1 );
		wp_update_post( $update_resume );
	}
} );

Basically this does a few things:

  1. Remove the preview step
  2. Change preview text to Submit Resume
  3. Manually publish resume (as the preview handler normally does this)