← All guides

How-to8 min read

How to post a job on WordPress

The fastest route for a single opening, and the setup that holds up once you're hiring more than once a quarter.

WP Career Board
8Active jobs
146Applicants
2.1kViews
Senior Product DesignerPublished
23 applied
Frontend EngineerPublished
41 applied
Content MarketerPublished
12 applied

If you already run a WordPress site, you don’t need a separate careers platform to post a single job opening. WordPress can publish it in a few minutes, no new account and no new login for you or your applicants. The real question isn’t whether WordPress can do it. It’s whether a plain post is enough, or whether you’re past the point where you need something built for job listings specifically.

Both answers are legitimate, and which one is right depends almost entirely on how often you hire, not on how polished you want the page to look.

Route one: post it as a regular page or post

The fastest path is the one you already know. Open the editor, write the role, publish. There’s nothing wrong with this for a single opening or an occasional hire.

A workable job post covers a short list of things: what the role actually is day to day, who it reports to, what’s required versus nice-to-have, the general compensation range or a note that it’s negotiable, and clear instructions for how to apply along with a deadline. Put the how-to-apply and deadline near the top, not buried at the bottom after three paragraphs of company history.

This approach breaks down in a few predictable ways once you’re hiring more than one role at a time:

  • No structured fields. Everything lives in free-text paragraphs, so there’s no consistent way to filter by location or employment type, and no way for a visitor to browse “open roles” as a list instead of hunting through your blog archive.
  • No applications inbox. Applicants email you a resume, or fill out a generic contact form that dumps into the same inbox as spam and support requests. Nothing tracks who applied or what stage they’re at.
  • No automatic expiry. The post stays live until someone remembers to unpublish it. A stale “hiring now” page for a role you filled two months ago costs you credibility with candidates and looks sloppy to anyone checking whether you’re still actively growing.
  • No JobPosting structured data. Google’s job search results run on schema markup, not on how well-written your post is. A plain WordPress post won’t show up there unless someone hand-codes JSON-LD into it, which almost nobody does for a single listing.

None of that matters much for one role filled once. It matters a lot at four or five open roles running at once, or if you hire on any kind of regular cadence.

What a job post actually needs versus what’s just filler

Job posts get bloated fast, usually with the same boilerplate paragraphs about “our mission” and “our values” repeated across every listing. Here’s a rough guide to what earns its place.

Belongs in the postUsually wastes space
Role title and departmentCompany history paragraph
Location and remote/hybrid/onsiteStock “why work here” copy repeated on every listing
Core responsibilities (5-8 bullets, not 20)A generic list of “perks” with no specifics
Must-have requirements, kept shortRequirements copied wholesale from a template job description
Compensation range or a clear note it’s negotiableVague phrases like “competitive salary” with no number or range
How to apply and the deadlineMultiple conflicting contact methods
Application deadline or expiryAn open-ended “ongoing” posting with no end date

The pattern is simple. Anything specific to this role and this hire earns its place. Anything that’s the same on every listing belongs on your careers or about page instead, linked once rather than pasted into every post.

Route two: use a job board plugin

A job board plugin turns “publish a page” into “publish a listing with fields the rest of the system can use.” Practically, that means:

  • Structured fields for location, employment type, salary, and remote status, instead of free text, so listings can be filtered and sorted.
  • An applications system built into the site, so candidates apply on-page and you review them from a dashboard rather than an inbox.
  • Expiry dates, so a role stops appearing, or gets flagged as closed, automatically instead of sitting there forever.
  • JobPosting structured data generated for you, so each listing is eligible for Google’s job search results without you writing schema by hand.
  • Categories and search, once you have enough open roles that a single flat list stops being usable.

This is the point where mentioning a specific tool is useful rather than promotional: WP Career Board handles all of the above directly on your existing WordPress install, generating the JobPosting schema automatically and giving applicants a real dashboard instead of an email thread. It’s one option among several, and the mechanics described here (structured fields, applications, schema, expiry) apply whichever plugin you end up choosing.

Why JobPosting structured data actually matters

This is worth being precise about, because it’s easy to either dismiss it or oversell it.

Google Jobs, the job-specific results that show up for searches like “marketing jobs near me,” is built entirely on schema, not on page content quality. A beautifully written listing with no JobPosting markup is invisible to it. A plain, boring listing with correct markup is eligible to appear. The markup needs a handful of required fields done correctly, including a valid validThrough expiry date, or Google can reject the listing or eventually stop trusting your feed altogether.

What it won’t do is guarantee ranking, guarantee clicks, or make a bad job description convert better. It’s a distribution mechanism, not a persuasion one. If you’re posting one role a year, don’t lose sleep over it. If job listings are a repeated part of how you hire, or a repeated part of how your site earns traffic, it’s a real reason to move off a plain post, separate from the applications-tracking argument.

One detail people miss: an expired listing with stale schema is worse than no schema at all. If the markup still says a role is open weeks after you filled it, that’s the kind of mismatch search engines penalize rather than ignore. Whatever route you take, closing a listing on time matters as much as opening it correctly.

What happens after someone applies

This is where the two routes diverge most in practice. With a plain post, an application usually means an email lands in your inbox, mixed in with everything else, with no record of who else applied or where things stand. You’re tracking candidates in your head or a spreadsheet you update inconsistently.

A plugin with an applications system keeps that on the site. Each applicant shows up against the specific listing, and you can move them through stages instead of losing track of who you’ve already reviewed. For a single hire that’s overkill. For a handful of open roles running at once, it’s the difference between knowing where things stand and guessing.

The actual steps, whichever route you pick

Strip away the tooling and posting a job on WordPress comes down to the same handful of moves:

  1. Write the role first, outside the editor. A plain document is easier to edit than fighting the block editor while you’re still figuring out what the job actually is.
  2. Fill in the fields your route supports. For a plain post, that’s the body copy. For a plugin, that’s location, employment type, salary, and any category fields it offers.
  3. Set the deadline or expiry before you publish, not after. It’s the step people forget, and it’s the one that causes stale listings.
  4. Preview the listing as a visitor would see it, not just in the editor. Structured fields sometimes render oddly until you check the live page.
  5. Publish, then confirm applications actually reach you. Send a test application if your route supports one. Finding out the apply button was broken a week later is a bad way to lose a candidate.
  6. Take it down or let it expire on schedule. This is the step both routes skip if you don’t build a reminder into your process.

Which route to take

If you’re filling one role and don’t expect to hire again soon, write a good post following the table above. Set a reminder to take it down once the role is filled, and move on. It’s the right amount of effort for the job.

If you’re already juggling more than a couple of open roles, fielding applications by email, or forgetting to unpublish filled positions, that’s the actual signal to move to a plugin, not a fixed number of jobs. The full setup walkthrough, from installing a plugin to publishing your first structured listing, is covered in how to create a job board on WordPress. If you’re not sure which side of that line you’re on, signs your job board has outgrown its plugin covers the same trade-off from the other direction. And if you want the shortest path to a working setup, WP Career Board is free to install, with pricing covering what the paid tier adds once you’re monetizing listings.

Common questions

Can I just add a job as a regular WordPress post?

Yes, and for a single one-off opening that's often the right call. Write the role and deadline into a normal post or page, with clear instructions for how to apply. It works fine until you need structured fields, an applications inbox, an automatic expiry date, or you're posting more than a couple of roles a year.

Do I need a plugin to post a job on WordPress?

No, not for one listing. A plugin earns its place once you're managing multiple open roles at a time, want applicants to apply through the site instead of email, need listings to expire automatically, or want the job to show up correctly in Google's job results.

What is JobPosting structured data and do I need it?

It's schema markup that tells Google (and other search engines) the specifics of a job: title, location, salary if you publish one, employment type, and a valid expiry date. Without it, your listing is just a page. With it, the listing is eligible to appear in Google's dedicated job search results, which get real click-through from people actively looking. A plain post won't have it unless you hand-code JSON-LD; a job board plugin generates it automatically.

How long should a job stay posted before I take it down?

Set an expiry date up front rather than leaving it live indefinitely. Two to four weeks is typical for most roles, longer for hard-to-fill specialist positions. An expired listing that's still online frustrates candidates and can get your site flagged by Google if the structured data says the role closed weeks ago.

Where do applications go once someone applies?

Depends on your setup. A plain post usually points to an email address or an external form. A job board plugin can route applications into a dashboard on your own site, so you're not digging through an inbox, and some plugins let you move a candidate through stages: applied, reviewing, interview, offer.

Build it on your own WordPress.

WP Career Board is free to start and self-hosted. Run the 5-minute wizard and put this guide into practice.