Greenhouse jobs shortcode and blocks

View as Markdown

Embed Greenhouse jobs in WordPress with the [ghjb_jobs] shortcode or the Job List block, and filter by department or location.

On this page

Your jobs already have a list at /jobs/, an address you can change in the settings. Use these to show them anywhere else, such as a careers page you designed or a landing page.

Job list with a search box and department, location, employment type and workplace filters
The job list, rendered by [ghjb_jobs] or the Job List block.

Which Greenhouse jobs shortcode or block to use

ShortcodeWhat it showsBlock name
[ghjb_jobs]The job listghjb/job-list
[ghjb_filters]The search and filter formghjb/job-filters
[ghjb_job]One jobghjb/single-job
[ghjb_apply]The apply area for one jobghjb/application-form
[ghjb_job_meta]One job’s details: department, location, pay range and moreghjb/job-meta
[ghjb_job_sharing]Share links for one jobghjb/job-sharing
[ghjb_related_jobs]Other open jobs like this oneghjb/related-jobs
NoneOn a job archive, a link back to all jobs and the locations above a city or regionghjb/archive-breadcrumbs

In the block editor, search the inserter for “Job” to find Job List, Job Filters, Single Job, Job Application Form, Job Details, Job Sharing, Related Jobs and Job Archive Breadcrumbs. Each renders exactly what its shortcode renders. Job List and Job Filters show a live preview. The five blocks that show one job preview once a job ID is set; left blank, they show a placeholder and render the job being viewed. Job Archive Breadcrumbs has no settings and shows only on job archive pages.

The sidebar holds each block’s settings:

BlockSidebar settings
Job ListJobs per page, columns, department, location, employment type, workplace, grouping, Job title heading, and toggles for the filter form, count, pagination, department, location, date and excerpt.
Job FiltersUse the site setting or a switch per filter, location levels, job counts, hiding a one-option dropdown, and live results.
Single JobJob ID, and toggles for the title, details and apply area.
Job Application Form, Job SharingJob ID.
Job DetailsJob ID, and a toggle per detail, including Pay range and Application deadline.
Related JobsJob ID and the number of jobs, 1 to 12.

In a single job template, leave a one-job block’s ID blank; set one to pin a job on any page. Attributes without a sidebar setting, such as search or function, keep their default in a block; use the shortcode for those.

On block themes with WordPress 6.7 or newer, the plugin’s own job page templates are built from these blocks. See block templates.

Yes/no attributes take yes or no.

[ghjb_jobs]: the job list

AttributeDefaultWhat it does
per_pageThe Jobs per page setting, 20Jobs per page.
columns1Grid columns, 1 to 4.
departmentemptyShow one department only. Takes its name or slug, for example department="Engineering".
locationemptyShow only these locations, by name or slug. A location includes the offices below it, so location="emea" shows every job in that region. A comma list shows jobs in any of them.
type, workplace, function, industry, experience, educationemptyThe same for the other job taxonomies, for example type="full-time,part-time" or workplace="remote".
searchemptyShow only jobs whose title, description, location, department or employment type contains this text.
show_filtersnoShow the search and filter form above the list, with the filters from the Filters to show setting.
show_countyesShow “Showing 1–20 of 74 open positions”.
show_paginationyesShow page links when there is more than one page.
show_locationyesShow each job’s location.
show_departmentyesShow each job’s department.
show_datenoShow each job’s posting date.
show_excerptnoShow a short excerpt of each job’s description.
group_byemptydepartment or office groups the list under department or location headings.
heading_levelempty (automatic)The heading level of the job titles, 2 to 6. Automatic is 2 on the jobs page and its archives, where the list sits right under the page title, and 3 elsewhere. In a grouped list, the group names take this level and the job titles the next one down.
boardemptyLeave empty. The plugin connects one Greenhouse job board.

Jobs are sorted newest first. An attribute that picks jobs, such as department or search, wins over what the visitor picks. Its filter is left out of the list’s own form, and out of a Job Filters block or [ghjb_filters] on the same page.

Developers can change the heading level of every list with the ghjb_job_list_heading_level filter, which receives the level and the list’s attributes.

[ghjb_jobs show_filters="yes"]
[ghjb_jobs department="Engineering" per_page="5" show_count="no" show_pagination="no"]
[ghjb_jobs columns="2" group_by="department" show_excerpt="yes"]

[ghjb_filters]: filter by department or location

A standalone search and filter form, for a sidebar or anywhere other than directly above the list.

AttributeDefaultWhat it does
filtersemptyThe filters to show, in order, as a comma list: search, department, location, type, workplace, function, industry, experience, education. Empty uses the Filters to show setting.
show_countsyesShow the number of jobs next to each option.
hide_singleyesHide a dropdown that has only one option.
location_depth0Location levels in the dropdown: 1 top-level locations only, 2 adds the level below, and so on; 0 shows all.
liveyesUpdate the results in place, without reloading the page.
show_search, show_department, show_officeyesno hides the search box, department or location dropdown. Older switches; filters is simpler.
boardemptyLeave empty.
[ghjb_filters filters="search,location,type"]

Dropdowns list only terms with an open job, and leave out hidden terms. Put a [ghjb_jobs] list on the same page: the form filters it in place, and updates the address so the filtered list can be shared. Typing searches half a second after the visitor stops, from the second character; Enter searches for whatever is in the box. Without JavaScript the form submits normally, with the same result.

Each filter is a query parameter. ghjb_search holds the search text; the others hold a term slug: ghjb_department, ghjb_location, ghjb_type, ghjb_workplace, ghjb_function, ghjb_industry, ghjb_experience and ghjb_education. So /jobs/?ghjb_location=ireland&ghjb_type=full-time links straight to a filtered list. Pagination uses ghjb_page, or /page/2/ on the jobs page and its archives. With more than one list on a page, each pages on its own: the first uses ghjb_page, the second ghjb_page_2, the third ghjb_page_3, and so on.

[ghjb_job]: one job

AttributeDefaultWhat it does
idemptyThe job’s Greenhouse job ID: the number at the end of its address, such as id="4012345". Empty uses the job being viewed.
show_titlenoShow the job title as a heading.
show_metayesShow the job details, as [ghjb_job_meta] shows them with its defaults.
show_applyyesShow the apply area: the on-site form or the Apply on Greenhouse button.
boardemptyLeave empty.

A job’s ID is at the end of its address on your site, for example /jobs/senior-designer-4012345/, and at the end of its link on your Greenhouse job board, such as https://job-boards.greenhouse.io/yourcompany/jobs/4012345.

[ghjb_apply]: the apply area on its own

AttributeDefaultWhat it does
idemptyThe job’s Greenhouse job ID. Empty uses the job being viewed.
boardemptyLeave empty.

It shows the on-site application form when applications are taken on your site, and the Apply on Greenhouse button otherwise. See Greenhouse application form.

[ghjb_job_meta]: job details

The details box on its own, for a custom job layout.

AttributeDefaultWhat it does
idemptyThe job’s Greenhouse job ID. Empty uses the job being viewed.
show_department, show_location, show_type, show_dateyesShow the department, location, employment type or posting date.
show_workplaceyesShow a Remote badge on remote jobs, or Hybrid on hybrid ones.
show_payyesShow the Pay range row.
show_deadlineyesShow the Apply by row, the job’s application deadline in Greenhouse.
show_function, show_industry, show_experience, show_educationnoShow the job function, industry, experience or education level.
boardemptyLeave empty.

Empty details are left out. Function, industry, experience and education fill only when your board has matching custom fields.

Pay range shows the pay ranges Greenhouse publishes with the job, one line each, such as “146,500 – 198,300 USD per year”. The period shows only when the range names one. When a job has several ranges, each line starts with the range’s title, usually a location or pay zone. Turning off Pay ranges under Greenhouse → Settings → Display hides the row on every job, whatever show_pay says.

[ghjb_job_meta show_date="no"]

Links to share the job on LinkedIn, X, Facebook and by email, plus a Copy link button. They are plain links, so no script from those networks loads on your page. The copy button appears only where the browser can copy.

AttributeDefaultWhat it does
idemptyThe job’s Greenhouse job ID. Empty uses the job being viewed.
boardemptyLeave empty.

Developers can add, remove or reorder networks with the ghjb_share_links filter.

A short list of other open jobs, to keep candidates browsing. Jobs in the same department come first, then jobs in the same region, newest first. The job being viewed is never listed, and nothing shows when no job matches.

AttributeDefaultWhat it does
idemptyThe job to match. Empty uses the job being viewed.
count3How many jobs to show, 1 to 12.
boardemptyLeave empty.

The job page templates include Related Jobs. Developers can hide it there, and wherever the Related Jobs block is placed, by returning false from the ghjb_show_related_jobs filter.

Load the styles on custom layouts

The plugin’s stylesheet loads on the jobs pages and on any page whose content holds a [ghjb_ shortcode or a ghjb/ block. A shortcode printed from a theme template or a page builder may not be detected. Force the stylesheet on with:

add_filter( 'ghjb_enqueue_frontend_assets', '__return_true' );

Give every Greenhouse job a page on your own site.

Job pages with Google for Jobs markup, search and filters, and on-site applications. $69 a year for one site.