---
title: "Workable jobs shortcode and blocks"
description: "Embed Workable jobs in WordPress with the Workable jobs shortcode [wkjb_jobs] or the Job List block, and filter by department or location."
source: https://workable.w4dev.com/docs/shortcodes-and-blocks/
---

Your jobs already have a list at `/jobs/`, an address you can
[change in the settings](/docs/settings/#display-jobs-address-and-import-schedule). Use these to
show them anywhere else, such as a careers page you designed or a landing page.

<figure class="ak-shot">
  <img src="/screenshots/job-list.webp" alt="Job list with department and location filters, rendered by Workable Jobs for WordPress" width="1200" height="844" loading="lazy" decoding="async" />
  <figcaption>The job list, rendered by [wkjb_jobs] or the Job List block.</figcaption>
</figure>

## Which Workable jobs shortcode or block to use

| Shortcode | What it shows | Block name |
|---|---|---|
| `[wkjb_jobs]` | The job list | `wkjb/job-list` |
| `[wkjb_filters]` | The search and filter form | `wkjb/job-filters` |
| `[wkjb_job]` | One job | `wkjb/single-job` |
| `[wkjb_apply]` | The apply area for one job | `wkjb/application-form` |
| `[wkjb_job_meta]` | One job's details: department, location, type and more | `wkjb/job-meta` |
| `[wkjb_job_sharing]` | Share links for one job | `wkjb/job-sharing` |
| `[wkjb_related_jobs]` | Other open jobs like this one | `wkjb/related-jobs` |

In the block editor, search the inserter for "Job" to find **Job List**, **Job Filters**,
**Single Job**, **Job Application Form**, **Job Details**, **Job Sharing** and **Related Jobs**.
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.

The sidebar holds each block's settings:

| Block | Sidebar settings |
|---|---|
| **Job List** | Jobs per page, columns, department, location, employment type, workplace, grouping, and toggles for the filter form, count, pagination, department, location, date and excerpt. |
| **Job Filters** | **Use the site setting** or a switch per filter, location levels, job counts, hiding a one-option dropdown, and live results. |
| **Single Job** | Workable job ID, and toggles for the title, details and apply area. |
| **Job Application Form**, **Job Sharing** | Workable job ID. |
| **Job Details** | Workable job ID, and a toggle per detail. |
| **Related Jobs** | Workable job 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](/docs/templates/#block-themes-edit-job-pages-in-the-site-editor).

Yes/no attributes take `yes` or `no`.

## `[wkjb_jobs]`: the job list

| Attribute | Default | What it does |
|---|---|---|
| `per_page` | The **Jobs per page** setting, `20` | Jobs per page. |
| `columns` | `1` | Grid columns, 1 to 4. |
| `department` | empty | Show one department only. Takes its name or slug, for example `department="Engineering"`. |
| `location` | empty | Show only these locations: a country, region or city, by name or slug. A comma list shows jobs in any of them. |
| `type`, `workplace`, `function`, `industry`, `experience`, `education` | empty | The same for the other [job taxonomies](/docs/job-archives/), for example `type="full-time,part-time"` or `workplace="remote"`. |
| `office` | empty | The older name of `location`. Takes one location name. |
| `search` | empty | Show only jobs whose title, description, location, department or employment type contains this text. |
| `show_filters` | `no` | Show the search and filter form above the list, with the filters from the **Filters to show** setting. |
| `show_count` | `yes` | Show "Showing 1–20 of 74 open positions". |
| `show_pagination` | `yes` | Show page links when there is more than one page. |
| `show_location` | `yes` | Show each job's location. |
| `show_department` | `yes` | Show each job's department. |
| `show_date` | `no` | Show each job's posting date. |
| `show_excerpt` | `no` | Show a short excerpt of each job's description. |
| `group_by` | empty | `department` or `office` groups the list under headings. |
| `board` | empty | Leave empty. The plugin connects one Workable account. |

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 `[wkjb_filters]` on the same page.

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

## `[wkjb_filters]`: filter by department or location

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

| Attribute | Default | What it does |
|---|---|---|
| `filters` | empty | The 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_counts` | `yes` | Show the number of jobs next to each option. |
| `hide_single` | `yes` | Hide a dropdown that has only one option. |
| `location_depth` | `0` | Location levels in the dropdown: `1` countries, `2` adds regions, `3` adds cities, `0` all. |
| `live` | `yes` | Update the results in place, without reloading the page. |
| `show_search`, `show_department`, `show_office` | `yes` | `no` hides the search box, department or location dropdown. Older switches; `filters` is simpler. |
| `board` | empty | Leave empty. |

```
[wkjb_filters filters="search,location,type"]
```

Dropdowns list only terms with an open job, and leave out
[hidden terms](/docs/job-archives/#manage-job-terms-in-wp-admin). Put a `[wkjb_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. `wkjb_search` holds the search text; the others hold a term
slug: `wkjb_department`, `wkjb_location`, `wkjb_type`, `wkjb_workplace`, `wkjb_function`,
`wkjb_industry`, `wkjb_experience` and `wkjb_education`. So `/jobs/?wkjb_location=texas&wkjb_type=full-time`
links straight to a filtered list. Links using the older `wkjb_office` parameter still work.
Pagination uses `wkjb_page`.

## `[wkjb_job]`: one job

| Attribute | Default | What it does |
|---|---|---|
| `id` | empty | The job's Workable shortcode: the 10-character code at the end of its address, such as `id="A1B2C3D4E5"`. Case does not matter. Empty uses the job being viewed. |
| `show_title` | `no` | Show the job title as a heading. |
| `show_meta` | `yes` | Show department, location, employment type, remote and posting date. |
| `show_apply` | `yes` | Show the apply area: the on-site form or the **Apply on Workable** button. |
| `board` | empty | Leave empty. |

A job's shortcode is at the end of its address on your site, for example
`/jobs/senior-designer-a1b2c3d4e5/`, and in the job's link inside Workable.

## `[wkjb_apply]`: the apply area on its own

| Attribute | Default | What it does |
|---|---|---|
| `id` | empty | The job's shortcode. Empty uses the job being viewed. |
| `board` | empty | Leave empty. |

It shows the on-site application form when applications are taken on your site, and the
**Apply on Workable** button otherwise. See [Workable application form](/docs/on-site-applications/).

## `[wkjb_job_meta]`: job details

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

| Attribute | Default | What it does |
|---|---|---|
| `id` | empty | The job's shortcode. Empty uses the job being viewed. |
| `show_department`, `show_location`, `show_type`, `show_date` | `yes` | Show the department, location, employment type or posting date. |
| `show_workplace` | `yes` | Show a **Remote** badge on remote jobs. |
| `show_function`, `show_industry`, `show_experience`, `show_education` | `no` | Show the job function, industry, experience or education level. |

Empty details are left out, and so is a job function, industry, experience or education level
set to "Unspecified".

```
[wkjb_job_meta show_date="no" show_experience="yes"]
```

## `[wkjb_job_sharing]`: share links

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.

| Attribute | Default | What it does |
|---|---|---|
| `id` | empty | The job's shortcode. Empty uses the job being viewed. |

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

## `[wkjb_related_jobs]`: related jobs

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.

| Attribute | Default | What it does |
|---|---|---|
| `id` | empty | The job to match. Empty uses the job being viewed. |
| `count` | `3` | How many jobs to show, 1 to 12. |

## Load the styles on custom layouts

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

```php
add_filter( 'wkjb_enqueue_frontend_assets', '__return_true' );
```