Skip to content

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:

TaxonomySlugExample Values
IndustriesjobindustryTechnology, Banking, Pharma
SectorsjobsectorIT, Finance, Healthcare
Counties / RegionsjobcountyGreater London, California
CitiesjobcityLondon, Manchester, New York
CountriesjobcountryUnited Kingdom, United States
Job TypesjobtypePermanent, Contract, Temporary
TagsjobtagsRemote, Urgent, Featured
LanguagesjoblanguagesEnglish, French, German
LocationsjoblocationCombined 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

FieldDescription
jobIdRecruitly internal job ID
uniqueIdUnique identifier
referenceJob reference code

Job Details

FieldDescription
jobTitleJob title
jobStatusCurrent status
jobTypeEmployment type label (Permanent, Contract, ...)
postedOnDate the job was posted
shortDescShort summary for listings
experienceExperience requirement
hotHot-job flag
applyUrlDirect apply link for the job

Compensation

FieldDescription
payLabelDisplay label (e.g., "Competitive")
minSalaryRangeMinimum salary
maxSalaryRangeMaximum salary
salaryPackagePackage overview text

Location

FieldDescription
countryCountry name
countryCode2-letter country code
county / countyNameCounty / region
townCity
cityOrRegionCombined city/region label
postCodePostal/zip code
latitudeGPS latitude
longitudeGPS longitude
remoteWorkingRemote work flag

Sector & Industry

FieldDescription
sectorPrimary sector
sectorsAll sectors (JSON array)
industryIndustry (comma-separated when multiple)

Recruiter

FieldDescription
recruiterIdRecruiter's Recruitly ID
recruiterNameRecruiter's full name
recruiterJobTitleRecruiter's headline/title
recruiterEmailRecruiter's email
recruiterMobile / recruiterWorkPhonePhone numbers
recruiterLinkedInLinkedIn profile URL
recruiterPicProfile photo URL
recruiterCityRegion / recruiterFullAddressRecruiter location
recruiterLanguagesLanguages (JSON array)

Web Advert Content

The structured advert sections, prefixed webAdvert:

FieldDescription
webAdvertThe whole web advert object (JSON)
webAdvertmainResponsibilitiesKey responsibilities (HTML)
webAdvertwhatsOnOfferBenefits and package (HTML)
webAdvertcoreSkillsRequired skills (HTML)
webAdvertrecruitmentProcessProcess description (HTML)
webAdvertwhatWillYouLearnLearning and development (HTML)
webAdvertkeyLanguagesLanguage requirements (HTML)

Render these on templates with the recruitly_job_web_field shortcode (e.g. fieldname="mainResponsibilities").

Other

FieldDescription
companyNameHiring company name (empty for confidential clients)
languagesJob languages (JSON array)
bannerImageUrl / bannerImageLocalFileBanner image (also set as the post's featured image)
jobDetailImageUrlDetail image URL

Custom job tags from Recruitly are also written as individual meta entries (keyvalue), 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.

Recruitly — Recruitment CRM for Agencies