Comparison tables and head-to-head pages in PokaTheme

A reader asks two questions: which of these is best, and is this one better than that one. PokaTheme answers the first with a comparison table and the second with a head-to-head page.

By The PokaTheme team 6 min read

In this article
  1. Two jobs, two tools
  2. The Comparison Table: columns you pick
  3. The cells are shared, which is why they agree
  4. Sorting that cannot move the page
  5. One pair, one URL
  6. Only the pairings you choose
  7. Make the pages findable
  8. Where to start

A reader comparing operators asks two questions, and they want two different pages. “Which of these is best?” wants a table: ten operators, the same five facts for each, sortable. “Is this one better than that one?” wants a page about exactly two.

PokaTheme 5 has one tool for each, and they share their insides. The Comparison Table block puts as many operators as you like on a page with columns you choose. Head-to-head pages answer a URL like /vs/aurora-play/bright-harbour/ for pairings you have picked, out of records you already have — no page to write, no table to maintain.

This post covers the block and its columns, how the sorting stays out of your layout-shift score, how a head-to-head URL is routed, and how to make those pages findable.

Two jobs, two tools

Both draw the same cells; only the question differs.

Comparison TableHead-to-head page
Put on a page bythe block or [poka_comparison_table]nothing — the URL exists on its own
How many operatorsup to 100, ten by defaultexactly two
Where the URL comes fromthe page you put it on/vs/<a>/<b>/, routed by the theme
Who decides what appearsyou, per blockthe Compare with field on a review

The table is what a commercial listicle is built around. The head-to-head page is long-tail: somebody types two brand names with a “vs” between them, and you either have that page or you do not.

The Comparison Table: columns you pick

Insert PokaTheme Comparison Table and the block’s sidebar has two panels. Columns is a checkbox each for Operator, Rating, Welcome offer, Licence, Deposit methods, Last checked, Withdrawal observed and Visit. The order you tick them in does not matter — the table always draws them in that order, so the Visit button cannot end up in the middle.

Settings holds Heading, Category (a review category, so one block can be “best slots sites” and another “best live casinos”), How many, Order by — Rating or Date — and Let visitors filter by name.

Every PokaTheme block is also a shortcode, and this one is [poka_comparison_table]. The default set of columns, written out:

[poka_comparison_table columns="operator,rating,bonus,licence,cta" num="10" sort="rating"]

Two attributes have no control in the block. reviews takes a named list of operators, by ID or slug, in your order — and a named list is the whole list, so num stops applying rather than dropping the last five of fifteen. filter="false" turns the search box off.

Fewer columns read better on a phone than a table that scrolls sideways.

The cells are shared, which is why they agree

The columns between Operator and Visit are the same row definitions the head-to-head page uses — one description of how a licence cell looks, used in both places, so the two pages cannot disagree about the same operator.

  • Rating — the review’s rating, out of 5.
  • Welcome offer — the operator’s current live bonus record headline. Before you have migrated your offers it falls back to the v4 bonus text, so the column works on day one of an upgrade.
  • Licence and Deposit methods — the operator’s terms, each linked to its own archive.
  • Last checked — reads as Verified 12 September by Anna, from Last verified and Verified by on the review.
  • Withdrawal observed — the hours from Withdrawal received in (hours).

A fact nobody has filled in shows as Not stated rather than an empty cell: on a comparison, a blank reads as an oversight.

The Operator cell is the logo on the operator’s own brand colour, linked to the review. The Visit cell is the tracking link, rel="nofollow noopener sponsored" with the ad label beside it. An operator with no affiliate link set gets a Read review button instead — an internal link, so it is not marked sponsored, because that would not be true.

Nothing in the table states an age limit or a licence notice. Those come from your market’s compliance profile, along with the responsible-gambling page.

Sorting that cannot move the page

The table is complete and correct in the HTML. The script only reorders and hides rows already on the page, so it works with JavaScript off, nothing is fetched, and nothing reflows after load — which is how a table at the top of a commercial page stays out of the layout-shift score.

Three details are deliberate, and all three come from tables getting them wrong:

  • Sort keys are attributes, not parsed text. “4.5 / 5” and “Verified 12 September by Anna” are written to be read; a script guessing which part is the value gets it wrong somewhere.
  • A column is numeric or textual once, for the whole column. Deciding per pair is how a column sorts 10 before 9.
  • Operators with no value stay at the bottom whichever way the column points. Sorted as nought, an unrated site sits below every one-star one way round and above every five-star one the other.

The first click gives you what you wanted: best ratings first on a number, A to Z on a name. After that it flips, with no third click back to unsorted. Headers carry aria-sort, and the filter box announces “6 of 12 shown” to a screen reader.

One pair, one URL

A head-to-head page lives at two path segments: /vs/aurora-play/bright-harbour/. Two rather than the prettier a-vs-b because operator slugs contain hyphens, and one segment cannot be split back into two without guessing where the boundary is. The base is vs, and a filter can change it.

The pair is ordered by slug and the other order redirects to it permanently — one address for one page, rather than duplicate content at two.

The page is the h1 — Aurora Play vs Bright Harbour — the shared comparison rows with both logos linked to their reviews, and a Visit button each. On a phone the table stacks and each cell gets the operator’s name in front of it, so a value never sits under the wrong brand.

Only the pairings you choose

Editing a review, the Related operators panel has three fields. Compare with is the one that creates pages: pick the operators this one is worth putting beside, up to twenty. It is symmetric, so you only set it on one of the two. Any /vs/ URL for a pairing nobody chose returns a 404.

That is the point. Four hundred operators make 79,800 possible pairs, and a theme that generated all of them would not have built a long-tail asset — it would have built 79,800 thin pages pointing at each other.

The panel’s other two fields, Alternatives and the read-only Sister sites, create no pages. Drafts can be picked in any of the three; the front end leaves unpublished operators out until they go live.

Make the pages findable

A head-to-head URL has no post behind it, so nothing adds it to your sitemap. Internal links are how these pages get crawled, and [poka_comparisons] on a review template is the shortcut: it lists every head-to-head page that operator has, linked to the comparison itself.

[poka_comparisons title="Compare Aurora Play"]

Its companion, [poka_related_operators type="compare"], links the other operators’ reviews instead. Use the first when you want the comparison page ranked, the second when you want the review read.

Where to start

  1. Put one table where the comparison already happens — your “best casinos” listicle, not a new page. Four columns and the button.
  2. Fill in Last verified on your top ten. Last checked is the column competitors cannot fake, and it is empty until somebody types a date.
  3. Set Compare with on the three or four pairings people actually search for. Those pages then exist, with no copy to write.
  4. Add [poka_comparisons] to the review template so each new pairing links itself from both sides.

The documentation has the attribute reference for both shortcodes, and the Comparison table pattern inserts a ready-made section. All five demos ship with reviews, licences and bonuses wired up, so the table has something to draw the moment you import one. Coming from version 4? The upgrade notes cover the migration tool first.

Written by the PokaTheme team

PokaTheme is designed and built by Redshift web development, a small team in Thessaloniki, Greece, making WordPress themes for affiliate sites for more than ten years.