Skip to content

Redirect Manager

New in v3.11.0. Free, and on by default — it’s treated as a safety feature (a deleted or renamed page shouldn’t leave a dead URL), so it ships active rather than opt-in, though it can be switched off entirely from the Modules tab. Five tools, a Redirects admin tab, and an automatic suggestion queue that watches every content delete/rename.

Read-only, enabled by default. Lists configured redirects.

Input (all optional): enabled — filter to on/off redirects. search — match against source/target. per_page — 1–500, default 100. page — default 1. Returns: { redirects: [...], total }.

Read-only, enabled by default. Scans published content for internal links that are dead or already redirected.

Input (all optional): max_posts — 1–2000, default 200. max_seconds — 1–60, default 10. Returns: { scanned, findings: [{ post_id, post_title, href, kind, suggestion }], partial }. kind is dead (404 or trashed target), redirected (the link works but already has a redirect — link straight to the target instead), or ok/external. partial: true if the scan hit its time cap before finishing.

Write, disabled by default. Requires manage_options.

Input: source (required) — e.g. /old-page. target (a URL) or target_post_id — mutually exclusive. status_code301 or 302, default 301. ignore_query — match regardless of ?query, default true. Returns: { redirect, warning? }. It still creates the redirect if source shadows a live, published page — but returns a warning flagging that, since redirecting a URL that’s still in use will make the live page unreachable.

Write, disabled by default. Patch-style: id (required) plus any of source / target / target_post_id / status_code / ignore_query / enabled — only the fields you supply change.

Write, disabled by default, destructive. id (required). Reversible from History — see Change History & Rollback.

Deleting a post or changing its slug pushes a suggestion — never a redirect outright, an agent still has to confirm it — into a de-duped queue capped at 50 entries (option emcp_tools_redirect_suggestions). Suggestions surface in the Suggested redirects card on the Redirects admin tab, each with an “Add redirect” button that pre-fills the Add/Edit form from the suggestion.

EMCP Tools → Redirects has three sections:

  • Add/Edit Redirect — a form for Source path, Target URL or Target post ID, Status code (301/302), and the “Match regardless of ?query” checkbox. The submit button reads “Add redirect” or “Update redirect” depending on whether you’re editing an existing row.

    EMCP Tools → Redirects tab, Add/Edit Redirect form with Source, Target, Status code, and the match-query checkbox

  • Suggested redirects — only shown when there’s a pending suggestion. Each row shows the orphaned path, whether it came from a delete or a slug rename, and an “Add redirect” button.

  • Active redirects — a table of every configured redirect: Source, Target, Code, Hits, and row actions. Disabled redirects are shown dimmed.

    EMCP Tools → Redirects tab, Active redirects table with Source, Target, Code, Hits, and Actions columns

  • Read tools (list-redirects, find-broken-links) are enabled by default; write tools are off until turned on, same convention as every other write-capable tool family.
  • All five require manage_options.
  • Every create/update/delete is recorded to the change ledger and reversible from History — see Change History & Rollback.
  • create-redirect warns rather than blocks when a source shadows a live page, so a careless redirect can still make a published page unreachable — check the warning field.