Skip to content
W3Bullhorn
W3Bullhorn
Book a demo

Rank Math

One canonical, one sitemap, one set of job data

Rank Math does more than Yoast on job pages, so the division of work is different — and it hinges on a module you may or may not have switched on. W3Bullhorn checks which, rather than assuming, because getting it wrong in either direction costs you.

Detected from the running plugin, not from a settings table.

The split

Who owns what

Page titlesRank Math. W3Bullhorn emits none
Canonical addressesRank Math. It emits one on every URL including archives, so the plugin stands down
XML sitemapRank Math. It switches core sitemaps off and ships its own, and the plugin never re-enables them
Job structured dataRank Math **if its rich-snippet module is on**. Otherwise W3Bullhorn, so a job page is never left with none
Indexing rules for filtered listingsW3Bullhorn, and this needed the same fix as on Yoast sites

The conditional one

Standing down from structured data, but only when there is something to stand down for

If Rank Math’s rich-snippet module is on, it emits job structured data of its own, and two sets on one page is worse than either. So the plugin stands down. If that module is off, Rank Math emits none, and standing down would leave your job pages with no job data at all — which is the difference between appearing in Google for Jobs and not.

  • The module setting is read, not assumed
  • A setting that cannot be understood is treated as "off", so the plugin keeps emitting
  • Never two sets of job data on one page
  • Never zero sets either

Defensive reading

Why it fails safe in that direction

A deliberate choice, and worth the explanation.

The module setting is read defensively: a stored value that is not the shape the plugin expects cannot be interpreted as "the module is on". That asymmetry is intentional. A wrong "on" silently removes structured data from every job page on the site — an invisible failure you would discover from a traffic graph months later. A wrong "off" produces, at worst, two sets of job data, which is visible the first time anybody tests a page.

Given a choice between a quiet failure and a loud one, the loud one is correct.

Robots

The filtered-listing fix applies here too

Like Yoast, Rank Math replaces WordPress’s own robots output with its own. The plugin’s instruction that filtered and sorted listing addresses should not be indexed was being calculated and then discarded on any site running either plugin. It was found by examining what each surface actually does rather than whether a compatibility hook existed, and fixed so the instruction survives.

Without that fix, the symptom is facet URLs in Google several weeks later — a careers section competing with itself, with nothing in any log to explain it.

FAQ

Questions about Rank Math and job pages

Short answers here. Anything else, ask us directly.

Should we turn Rank Math’s rich snippets on or off?

Either works. The plugin checks which and fills the gap if Rank Math is not emitting job data. If you have no preference, leaving it off and letting the plugin handle job structured data keeps the job markup with the plugin that builds it from your Bullhorn fields.

Will we get two sets of job structured data?

No. That is the specific thing the module check prevents.

Will we get two sitemaps?

No. Rank Math ships its own and switches core sitemaps off; the plugin never re-enables them.

What if we switch Rank Math off later?

The plugin takes back the canonical and the job structured data. Nothing needs reconfiguring.

Does this slow the job pages down?

No. Detection reads two constants and one already-loaded option.

Put your Bullhorn jobs on your own website

See W3Bullhorn working with your own Bullhorn jobs, on a short call with a specialist who knows Bullhorn and WordPress.

Book a demo How it works