The WP Job Manager Plugin creates Structured Data out of the box. However, as almost always, these are not complete. Googles Structured Data Test Tool complains about missing recommended fields:
- addressLocality
- addressRegion
- streetAddress
- postalCode
- baseSalary
- And maybe more.
This post describes how you can build your own using SNIP, the Structured Data Plugin for WordPress.
A) Read the reference
First, you should read through the Structured Data Reference on Googles pages to learn more about what you can and do and what you shouldn’t do.
B) The JobPosting Schema
As you could read on the reference (linked above) you need schema.org’s JobPosting Schema to get a Rich Snippet in Googles (and maybe other search engines) search results.
C) Create a Global Snippet
As you might now, SNIP allows you to create so called Global Snippets. That is a schema syntax that can be populated to multiple pages (in this case: job posts) at once so that you don’t need to create a schema for every single post one by one.
C1) JobPosting
Now head over to “Global Snippets” and create a new one. Then type “JobPosting” into the field where it says “Select a thing”. After selecting schema.org/JobPosting SNIP will load some properties for you already. Of course you can always add more if you need them. The properties are loaded for your convenience so that you don’t have to add them one by one.
C2) Properties
Now go through every property and fill them with the right values. This is what I would do:
- datePosted = Post published date
- validThrough = Post meta field with field value “_job_expires”
- title = Post title
- description = Post content
- hiringOrganziation = Sub-Schema “Organization”
- name = Post meta field with field value “_company_name”
- sameAs = Post meta field with field value “_company_website”
- url = Post meta field with field value “_company_website”
- jobLocation = Sub-Schema “Place”
- name = Post meta field with field value “_job_location”
- address = Sub-Schema “PostalAddress”
- postalCode = Direct text input + mark as overridable
- addressLocality = Post meta field with field value “_job_location”
- addressRegion = Direct text input + mark as overridable
- streetAddress = Direct text input + mark as overridable
- baseSalary = Sub-Schema “MonetaryAmount”
- currency = Direct Text Input with the Currency Code (like “USD” or “EUR” for example) + maybe mark overridable if this is different within every single job posting
- value = Sub-Schema “QuantitiveValue”
- value = Direct Tex Input + mark as overridable
- unitText = Direct Text Input + mark as overridable
- employmentType = Direct Text Input + mark as overridable
Note the following: Because the WP Job Manager Plugin does not allow you to set all of the properties you need, you have to mark them overridable. Please have a look at my Structured Data Training, especially the video where I explain how to overwrite global snippet properties to learn more.
To sum it all up, it should look like this:
C3) Position
Don’t forget to set the position of the new schema to target job posting pages only:
D) Allow the usage of SNIP in job postings
Now go to SNIP -> Settings and select “Jobs” for the Post Types. Save your settings.
E) Edit missing fields on a Job Posting
Now:
- create a job posting or edit an existing one. Fill all the fields you need within the WP Job Manager Plugin.
- Then open up the Global Snippets window by clicking the “Edit global snippets” button in the sidebar.
- Click “JobPosting” in the left sidebar of the newly opened window (see screenshot below).
- Fill all the fields.
- Save your settings and close the window.
F) Remove Structured Data generated by WP Job Manager
Now there is only one thing to do: removing the Structured Data that the WP Job Manager Plugin generates. This needs to be done because otherwise you’ll have two JobPosting schemas on your job postings. This could potentially confuse search engines.
Unfortunately there is no option in the backend of the plugin to remove it. So you need to use add the following code to your themes functions.php
or even better: use the plugin that I wrote (see below):
add_filter( 'wpjm_get_job_listing_structured_data', function ( $data ) {
return '';
} );
The easiest way is to just install the WP Job Manager Structured Data Deactivator plugin that I wrote and is available for free on Github (direct download).
G) Test your Structured Data
Now head over to Googles Structured Data Test Tool and test your job postings. Don’t forget to flush your cache plugins caches (if any).