Appearance
Custom Post Type
The Recruitly plugin registers a current-vacancies custom post type in WordPress. Every job synced from Recruitly is a first-class WordPress post — the job title becomes post_title, the full advert description becomes post_content, the banner image becomes the featured image, and every other attribute is stored as post meta. Jobs are queryable, filterable, and displayable with any tool that works with custom post types.
This is the foundation that powers both the shortcodes and the page-builder integrations described below.
Taxonomies
Each job is tagged with terms from these 9 taxonomies:
| Taxonomy | Slug | Example Values |
|---|---|---|
| Industries | jobindustry | Technology, Banking, Pharma |
| Sectors | jobsector | IT, Finance, Healthcare |
| Counties / Regions | jobcounty | Greater London, California |
| Cities | jobcity | London, Manchester, New York |
| Countries | jobcountry | United Kingdom, United States |
| Job Types | jobtype | Permanent, Contract, Temporary |
| Tags | jobtags | Remote, Urgent, Featured |
| Languages | joblanguages | English, French, German |
| Locations | joblocation | Combined location terms |
Use these in WP_Query, archive templates, or any taxonomy-aware widget/plugin.
Metadata Fields
All job data is stored as post meta. Access any field with the standard WordPress function:
php
$value = get_post_meta($post_id, 'jobTitle', true);Identifiers
| Field | Description |
|---|---|
jobId | Recruitly internal job ID |
uniqueId | Unique identifier |
reference | Job reference code |
Job Details
| Field | Description |
|---|---|
jobTitle | Job title |
jobStatus | Current status |
jobType | Employment type label (Permanent, Contract, ...) |
postedOn | Date the job was posted |
shortDesc | Short summary for listings |
experience | Experience requirement |
hot | Hot-job flag |
applyUrl | Direct apply link for the job |
Compensation
| Field | Description |
|---|---|
payLabel | Display label (e.g., "Competitive") |
minSalaryRange | Minimum salary |
maxSalaryRange | Maximum salary |
salaryPackage | Package overview text |
Location
| Field | Description |
|---|---|
country | Country name |
countryCode | 2-letter country code |
county / countyName | County / region |
town | City |
cityOrRegion | Combined city/region label |
postCode | Postal/zip code |
latitude | GPS latitude |
longitude | GPS longitude |
remoteWorking | Remote work flag |
Sector & Industry
| Field | Description |
|---|---|
sector | Primary sector |
sectors | All sectors (JSON array) |
industry | Industry (comma-separated when multiple) |
Recruiter
| Field | Description |
|---|---|
recruiterId | Recruiter's Recruitly ID |
recruiterName | Recruiter's full name |
recruiterJobTitle | Recruiter's headline/title |
recruiterEmail | Recruiter's email |
recruiterMobile / recruiterWorkPhone | Phone numbers |
recruiterLinkedIn | LinkedIn profile URL |
recruiterPic | Profile photo URL |
recruiterCityRegion / recruiterFullAddress | Recruiter location |
recruiterLanguages | Languages (JSON array) |
Web Advert Content
The structured advert sections, prefixed webAdvert:
| Field | Description |
|---|---|
webAdvert | The whole web advert object (JSON) |
webAdvertmainResponsibilities | Key responsibilities (HTML) |
webAdvertwhatsOnOffer | Benefits and package (HTML) |
webAdvertcoreSkills | Required skills (HTML) |
webAdvertrecruitmentProcess | Process description (HTML) |
webAdvertwhatWillYouLearn | Learning and development (HTML) |
webAdvertkeyLanguages | Language requirements (HTML) |
Render these on templates with the recruitly_job_web_field shortcode (e.g. fieldname="mainResponsibilities").
Other
| Field | Description |
|---|---|
companyName | Hiring company name (empty for confidential clients) |
languages | Job languages (JSON array) |
bannerImageUrl / bannerImageLocalFile | Banner image (also set as the post's featured image) |
jobDetailImageUrl | Detail image URL |
Custom job tags from Recruitly are also written as individual meta entries (key → value), so any tag you add to a job in the CRM is directly queryable.
Example: Custom WP_Query
php
$jobs = new WP_Query([
'post_type' => 'current-vacancies',
'tax_query' => [
[
'taxonomy' => 'jobcity',
'field' => 'slug',
'terms' => 'london',
],
],
'meta_query' => [
[
'key' => 'jobType',
'value' => 'Permanent',
'compare' => '=',
],
],
'posts_per_page' => 10,
]);
while ($jobs->have_posts()) {
$jobs->the_post();
$salary = get_post_meta(get_the_ID(), 'payLabel', true);
$city = get_post_meta(get_the_ID(), 'town', true);
// render your job card
}
wp_reset_postdata();Page Builders & Advanced Display
Because Recruitly jobs are a standard WordPress custom post type, you're not limited to shortcodes or PHP templates. Any page builder or plugin that supports custom post types can display your jobs with full design control.
Elementor Pro — Posts Widget
Elementor Pro's built-in Posts Widget can query and display the current-vacancies post type directly. Design every aspect of the job card visually — layout, typography, colors, hover effects — without writing code. Set the widget's query source to the current-vacancies post type and use Elementor's dynamic tags to pull in any post meta field (salary, location, recruiter, etc.).
JetSmartFilters / JetEngine (Crocoblock)
JetSmartFilters adds advanced filtering to any listing — build search-and-filter UIs that narrow jobs by city, sector, salary range, job type, or any taxonomy/meta field. JetEngine can query, display, and relate job posts using its Listing Grid, dynamic visibility, and relations features.
Why This Matters
With shortcodes, you get a job board that works. With the custom post type approach and page builders, you get a job board that looks and behaves exactly like the rest of your site — same design system, same interactions, fully branded.