Posts are stored once for the whole installation and then assigned to the sites they should appear on. Categories and tags are global, but public listings only show the ones that have posts on the current site.
Assigning a post to sites
- Open the post for editing.
- In the Post Settings panel, tick the sites under Visible on sites.
- Click Save Post.
A post is only visible on the sites that are ticked. Ticking nothing hides the post from every public site: it will not appear in the index, archives, feeds, sitemap, page blocks or the native API site_id filter, and its URL returns 404 on every site. The hint under the checkboxes ("Leave all unchecked to show on every site") describes an older behaviour and is not what the current version does. Posts you cannot see on the site are usually missing a site assignment; see Troubleshooting.
The Visible on sites field only appears when the installation has at least one site. Posts created through the legacy POST /api/blog/posts endpoint get no site assignment; use the native blog_posts resource with site_ids, or assign sites in the admin form afterwards.
What is filtered per site
With {site} being the site in the URL:
| Public feature | Filtered to the site |
|---|---|
Blog index /s/{site}/blog |
yes |
| Single post page | yes (404 on other sites) |
| Author, tag and category archives | yes |
| Index sidebar categories and tags | yes (only those with published posts on the site) |
| RSS and Atom feeds | yes |
| Sitemap | yes |
| Blog Posts page block | yes (the site the page belongs to) |
| "More posts by" on the post page | yes |
| Post preview | no (any site slug works) |
The admin Posts list is not filtered by site; it shows every post in the installation.
Previews and the "first" site
The Preview and View buttons in the admin need a site to build the URL. They use the first site the post is assigned to, or, when the post has no sites, the first site returned by the API. A View link on an unassigned published post therefore leads to a 404 until the post is assigned.