Searching multiple post types in full-page search results: Single ranked list vs Mixed sections
Super Speedy Search can search several post types from a single search box and present the results in one of two layouts: a unified list ranked by relevance, or a per-post-type sectioned page. This article covers how to configure each layout, the optional overrules for post types and template, the new per-row weighting in mixed-type queries, and the Post Type Promotion setting.
Table of Contents
When this applies
Open Settings → Super Speedy Search → Front-end and find the Select Default Post Type dropdown. The first option is Search multiple post types (this is what used to be labelled “Do not set”). When that option is selected, the multi-post-type panel below the dropdown becomes active. When a specific post type is selected instead, the multi-post-type panel is hidden and the search behaves as a normal single-type query rendered with that type’s standard template.
Choosing a layout
Two layouts are available:
- Single ranked list (default) — one unified results list ordered by relevance. All ticked post types are searched in a single query, ranked together, and rendered through the normal
search.phpchain. This is the layout that existed before 5.52 and is what existing sites will see on upgrade. - Mixed sections by post type — each post type gets its own section on the results page, rendered with that post type’s own section template. The order of the sections on the page is the ranking — i.e. the section you list first appears first.
Pick Single ranked list when relevance is the most important sort order and users are happy to see (say) a product, a blog post and a KB article interleaved in the same list. Pick Mixed sections when each post type has its own visual style and you want to keep them separated — typical example: a results page that shows the top 4 products, then the top 8 blog posts, then the top 3 KB articles, each in its own grid.
Single ranked list
Post types
Two modes:
- Let my site decide post types (default) — SSS does nothing special. Whatever your theme, WooCommerce, or other plugins decide via the normal WP search query is what gets searched. This preserves pre-5.52 behaviour exactly.
- Overrule post types — explicitly tick which post types this search box should target. SSS forces the query’s
post_typeto exactly the ticked list, regardless of what other code on the site would have set it to. If you tick nothing, SSS falls back to “all public post types not flaggedexclude_from_search“.
The overrule is useful when your theme or another plugin (e.g. WooCommerce) is hooking into the search query in a way that constrains it (often to just product or post) and you want to broaden it to several types. The setting is applied via pre_get_posts at the priority that puts SSS last in the chain.
The URL stays clean — ?s=search+term — and the post-type list is resolved server-side from this setting. SSS does not push the list onto the URL as &post_type=....
Search results template
Two modes:
- Let my site decide template (default) — WP’s normal
search.phptemplate hierarchy is used. No SSS interference. - Overrule template — choose a single post type from the dropdown. SSS routes the search results page through that post type’s
archive-{slug}.phpfirst, thensearch-{slug}.php, falling back to the normal search chain if neither exists.
This is useful when one of your post types has a rich archive template you’d like to reuse for multi-type searches — e.g. picking product here makes a multi-type search look and feel like a WooCommerce shop archive, including filters and the WooCommerce orderby control, while still returning results from posts and KB articles alongside the products.
Mixed sections layout
Each section is configured as a row in the Sections table:
| Column | What it means |
|---|---|
| Drag handle | Drag to reorder. The order of sections on the page is the order in this table. |
| Post type | The post type that section searches. |
| Results | Maximum number of items to render in this section (default 8). |
| Heading | The heading text displayed above the section. Supports <search-term> as a placeholder — e.g. Products matching '<search-term>' becomes Products matching 'red shoes' at render time. Leave blank to use the post type’s default plural name. |
Add new sections via the Add section dropdown — only post types not already in the table appear in the dropdown. Each section runs its own single-post-type query, so per-row weighting (see below) does not apply here — every section is ranked using its own post type’s weights, which is the natural behaviour for a single-type query.
Section template
Two modes:
- Use plugin default (recommended) — SSS looks for
archive-{slug}.phpin your theme first; if not found, it falls back to the plugin’s generic section renderer attemplates/sss-multi-search-section.php(with a Woo-aware variant attemplates/sss-multi-search-section-product.phpthat useswc_get_template_partfor full product cards). - Theme override only — SSS only loads
your-theme/super-speedy-search/sss-multi-search-section.php(orsss-multi-search-section-{slug}.phpfor a per-post-type override). Use this when you want full control and never want to fall back to the plugin’s defaults.
Themes can override any of the templates by placing files at:
your-theme/super-speedy-search/sss-multi-search.php(wrapper)your-theme/super-speedy-search/sss-multi-search-section.php(generic section)your-theme/super-speedy-search/sss-multi-search-section-{slug}.php(per-post-type section)
Per-row weights in single-list multi-type queries
Before 5.52, a multi-type single-list query picked one post type’s weights and used those weights for every row. This led to bad ranking on mixed-type searches — a post+product query, for example, ranked products with post weights and ignored product-specific metamatches like the _stock_status = instock boost.
From 5.52, each row is scored using its own post type’s weights via per-row CASE expressions over wp_superspeedysearch.post_type. A row that is a product is ranked with the product weights; a row that is a post is ranked with the post weights — in the same query, in the same ranked list.
This change is automatic and applies only to single-list multi-type queries. Single-type queries (one post type only) emit exactly the same SQL as before. Mixed Sections layout is also unaffected, because each section is already a single-type query.
Post Type Promotion
In a single ranked list with two or more post types, the relative ranking of the types is sometimes a business decision — e.g. on a shop, you may want products to always appear above blog posts when both match, even if a blog post happened to score slightly higher in raw relevance.
The Post Type Promotion row on each per-type Weights block (Settings → Super Speedy Search → Weights → expand a post type) lets you add a constant boost to that type’s relevance score. Tick the checkbox to enable it, then enter a positive number (e.g. 500) to bias that type upward. The value is added to every row of that post type’s relevance score.
Notes:
- Has no effect on single-type searches — there’s nothing to compete against.
- Has no effect in Mixed Sections layout — section order is already the ranking.
- Only applies in single-list multi-type queries.
- Negative values are valid if you want to demote a type relative to the others.
A reasonable starting value is 100–500. Inspect the result ordering with ?showweights=1 appended to a search URL (as an admin) to see the per-row contribution of each weight component, including Post Type Promotion.
Common setups
WooCommerce + blog + KB on one search page
- Layout: Single ranked list
- Post types: Overrule, tick
product,post,kb - Template: Overrule template, choose
product— gets you the shop archive with filters and orderby, while still surfacing blog and KB results inline - Post Type Promotion: add +200 to
productso products win ties
Sectioned results page
- Layout: Mixed sections by post type
- Sections: Products (limit 12, heading “Products for ‘
‘”), Posts (limit 6, heading “Articles”), KB (limit 4, heading “Help articles”) - Section template: Use plugin default — the Woo-aware product section template ships with the plugin and renders proper product cards out of the box
Multi-CPT directory site
- Layout: Single ranked list
- Post types: Overrule, tick every public CPT you index
- Template: Let my site decide — your search.php is generic enough
- Per-type weights: tune title/content/excerpt factors per CPT; use Post Type Promotion to break ties in business-priority order
Tips
- The clean URL is intentional. The post-type list is resolved from settings via
pre_get_posts, not pushed into the URL — bookmarks and shared links remain readable. - If you change Layout, Post Types or Template overrules, no rebuild is needed. These settings affect query and template selection at request time only.
- The
archive-product/orderby.phpand other WooCommerce template parts will work in the overruled template if your theme supports them — SSS hooks intowc_get_templateto allow this. - For per-row weight tuning, the
?showweights=1query parameter (admin only, ignored on AJAX) appends a per-row weight breakdown to the result rows so you can see exactly which weight components drove the ranking.