Configure custom post type URLs

POM Theme can control the public single-entry and archive URLs of each custom post type from Settings → Permalinks. Use these controls when a content collection should sit below a page, inherit a taxonomy hierarchy, use a dedicated archive slug, or expose entries without a post type base.

New and existing sites keep the current custom slug structure until another mode is selected and the permalink settings are saved.

Before changing a live URL structure

Confirm that the custom post type has the required public features under Settings → POM Theme → Content model:

  • Publicly queryable exposes single entries and their URL controls.
  • Has archive exposes the general post type archive and its URL controls.
  • A taxonomy must be public, hierarchical, connected to the post type, and use hierarchical URLs before it can provide a taxonomy-based single URL.
  • A page used as a base must be published. The static front page and posts page cannot be selected.

Inventory links in menus, campaigns, and external systems before changing an established structure.

Configure the single-entry URL

  1. Open Settings → Permalinks.
  2. Find Custom post type URLs and the required content type.
  3. Review Custom slug base. This is the ordinary post type base and the preserved legacy route.
  4. Choose a Single entry URL mode:
    • Default (custom slug base) keeps /custom-base/entry/.
    • No base uses /entry/ below the current language root.
    • Taxonomy-based uses the selected taxonomy archive and complete term hierarchy.
    • Page-based uses the complete permalink of the selected Base page.
  5. Complete the taxonomy or page selector shown for that mode.
  6. Save the permalink settings and open a representative entry.

For example, selecting a page at /documentation/ produces:

/documentation/install-the-theme/

POM Translate can produce a localized equivalent such as /es/documentacion/instalar-el-tema/. Polylang uses the translated base page associated with the entry language and adds its configured language directory.

Only one custom post type can use No base because two post types at the language root would be ambiguous. Pages and ordinary posts keep priority at that root.

For taxonomy-specific selection behavior, see Place single entries below taxonomy terms.

Configure the general post type archive

For a post type with archive support, choose a Post type archive URL mode:

  • Default (custom slug base) keeps the archive at the custom base.
  • Custom archive slug appends an archive-specific suffix after the custom slug base.
  • Page-based places the custom slug base below the selected Parent page permalink.

For a custom base of /documentation/ and an archive slug of library, the resulting archive is:

/documentation/library/

For a parent page at /resources/ and a custom base of documentation, the page-based archive is:

/resources/
/resources/documentation/

The first URL remains the normal WordPress page. The second resolves to the post type archive and uses its archive template. Breadcrumbs therefore link the page hierarchy before the archive label.

The same page can provide the single-entry base and the archive parent. In that configuration, /resources/entry/ is a single entry while /resources/documentation/ is the general archive. An entry whose slug would equal the archive base receives a numeric suffix.

Understand collision handling

POM Theme keeps each configured branch unambiguous:

  • A changed custom base or custom archive slug receives a WordPress-style numeric suffix when an existing page, taxonomy base, or another configured route owns it.
  • A page and a page-based single entry cannot occupy the same complete path. The later entry receives a suffix beginning with -2.
  • A page-backed single or archive branch cannot be identical to, above, or below another configured page-backed CPT or taxonomy branch.
  • Existing entries are checked when a page-based or base-free single mode is enabled and receive numeric suffixes only where a route collision exists.
  • POM Translate also keeps localized object slugs unique within each locale.

The page intentionally selected as an archive keeps its slug because it owns that archive route.

Redirects, SEO, and language plugins

WordPress permalink and archive-link APIs return the selected canonical structure. Rank Math and Yoast canonical filters use the same URLs, including archive pagination, and sitemap integrations receive the URLs through the standard link APIs.

The former custom post type single and archive routes remain available as permanent redirects to the new canonical location. Unrelated query parameters are retained. Feed, embed, pagination, comment-page, and multipage endpoints continue to use their normal WordPress meanings.

POM Translate localizes the page hierarchy, archive base, entry slug, and language prefix. It also builds localized canonical and alternate links from the selected structure. Polylang uses translated page relationships and its configured language-directory behavior. Save Settings → Permalinks after enabling Polylang, changing its URL mode, or connecting page translations.

For a page-based single, POM Theme breadcrumbs link every page ancestor and the selected base page before the current entry. For a page-based archive, they link the page ancestors and selected parent page before the post type archive label.

Rank Math breadcrumbs and breadcrumb schema use the same page hierarchy. Taxonomy-based singles continue to use their page-base ancestors, complete term trail, and current entry.

Verify the result

After saving:

  1. Open the selected single base page or archive parent page.
  2. Open one single entry and the general archive.
  3. Confirm the old single and archive URLs permanently redirect.
  4. Check archive pagination and feeds when the content type uses them.
  5. Confirm the canonical, sitemap entry, and breadcrumb trail.
  6. Repeat the checks for every active POM Translate or Polylang language.

If a selection is reset after saving, its page is unavailable or its branch overlaps another configured route. Choose a separate page branch and save again. If a new slug contains -2 or a later number, inspect existing pages, archives, entries, and taxonomy bases at the same path before renaming it.

To restore the previous structure, select the applicable Default (custom slug base) mode and save Settings → Permalinks.