Canonical Tags in WordPress
How WordPress core handles canonicals on singular content, what it leaves out, and how to add or override them with or without a plugin.
AIOSEO builds on WordPress's own canonical output, adding per-page overrides, a pagination setting, and a developer filter for the rest.
All in One SEO, usually shortened to AIOSEO, is refreshingly candid about this in its own documentation: WordPress does a great job of outputting the canonical URL for your content, and All in One SEO just supplements WordPress by adding some advanced features. That's an important starting point, because the canonical tag on an AIOSEO site isn't purely an AIOSEO invention, it's a layered system.
WordPress core already outputs a self-referencing canonical tag on singular content, meaning single posts and pages, through its built-in canonical function hooked into the site's head output. AIOSEO layers on top of that: it manages and normalizes the canonical output, extends canonical tags to content types and archive pages that core doesn't fully cover, respects a per-post override you set manually, and adds pagination handling that core doesn't attempt on its own. The practical result for a site owner is that indexable content, posts, pages, custom post types, and archive or taxonomy pages, ends up with self-referencing canonicals, with AIOSEO effectively in control of what gets output once it's active.
Hedge: because AIOSEO describes itself as supplementing core rather than fully documenting every page type it emits a canonical on, it's safer to treat self-referencing everywhere by default as the practical, observed outcome rather than a guaranteed per-page-type promise. If a specific archive type matters for your site, verify the actual output on the version you have installed.
AIOSEO gives you the same kind of per-page override Rank Math does, under its own naming. Open the post, page, or custom post type you want to edit, and scroll down to the AIOSEO Settings meta box beneath the content editor. Click into the Advanced tab, and you'll find a Canonical URL field there. Enter the full URL you want that page to canonicalize to, and AIOSEO outputs it in place of the automatic self-referencing canonical.
Leave the field blank and nothing changes from the default behavior described above, WordPress core and AIOSEO together auto-generate the self-referencing canonical for that URL. Fill it in, and you've told AIOSEO explicitly which URL should receive credit for that content instead. As with any override field, a value here always wins over the automatic behavior, so it's worth double-checking what you typed before saving.
Beyond the per-page override, AIOSEO exposes canonical behavior at the site level under AIOSEO, then Search Appearance, then Advanced. The setting to know here is No Pagination for Canonical URLs. When you enable it, the canonical tag on paginated pages, page 2, page 3, and beyond, stops self-referencing and instead points back to the first page of that series.
Treat this as a deliberate consolidation choice, not a default best practice. It runs contrary to Google's current guidance, which favors letting each paginated page self-canonicalize because each page typically holds different content that deserves its own chance to be crawled and indexed. Turning on No Pagination for Canonical URLs tells Google to essentially defer to page 1, which can hide products, posts, or listings that never appear on that first page.
There's also a documented historical bug tied to this setting: in certain configurations, No Pagination for Canonical URLs has produced a canonical pointing to a 404 page, tracked in AIOSEO's GitHub issue history. That's not necessarily a reason to avoid the setting if consolidation is genuinely what you want, but it is a reason to verify the actual output, view source on a few paginated URLs, after you flip it, rather than assuming it works exactly as described.
Exact label wording and where it sits inside the Search Appearance menu can shift slightly between AIOSEO versions, so confirm the setting's current location and name on the version you're running.
For scenarios the settings screens don't cover, AIOSEO provides a developer filter: aioseo_canonical_url. It receives the canonical URL AIOSEO is about to output and lets you change it, or suppress it, in code.
add_filter( 'aioseo_canonical_url', function ( $url ) {
// Return a modified URL, or '' to suppress the canonical tag entirely
return $url;
});AIOSEO's own documentation recommends adding this snippet through a code-snippet plugin such as WPCode rather than editing plugin files directly, so the change survives updates. A common documented use of this filter is preventing AIOSEO from outputting a canonical tag at all for specific content, returning an empty or false value inside the callback, guarded by a condition such as a post type check or a URL pattern match, and AIOSEO skips the tag for those pages.
This filter is the right tool when you need logic the Canonical URL field can't express, for instance computing a canonical dynamically based on a custom taxonomy term, or suppressing canonicals sitewide on a staging environment.
Most AIOSEO canonical problems trace back to a handful of recurring habits.
Not exactly. WordPress core already outputs a self-referencing canonical on singular content, and AIOSEO supplements and extends that output rather than starting from scratch, effectively taking control of the canonical once it's active.
When enabled under AIOSEO, Search Appearance, Advanced, it makes paginated pages canonicalize back to page 1 of the series instead of self-referencing their own URL. It's a deliberate consolidation choice that runs contrary to Google's current pagination guidance, and it has a documented history of occasionally producing a canonical pointing to a 404 page.
In the AIOSEO Settings meta box on the post or page editor, under the Advanced tab, in the Canonical URL field. Leave it blank for the automatic self-referencing canonical, or enter a full URL to override it.
Yes, using the aioseo_canonical_url filter. Return an empty or false value from the callback, guarded by a condition for the specific content you want to affect, and AIOSEO will skip outputting a canonical tag there.
No. AIOSEO's own FAQ is clear that a canonical URL simply receives full ranking credit; the original URL remains live and crawlable. A canonical is a consolidation hint to search engines, not a redirect that sends visitors or bots to a new address.
How WordPress core handles canonicals on singular content, what it leaves out, and how to add or override them with or without a plugin.
How Yoast SEO adds self-referencing canonicals across your whole WordPress site, where to override them, and how to fix a wrong canonical.
How Wix sets a default canonical for every page, how to override it, and the sitemap side effect you need to watch for.