- use pagination information on canonical (via @therealpecus)
- sitemap element type grouping (via @jamesedmonston)
- Remove trailing
?
if token removed from URL (Fixes #457 part 2) - Restore whitespace in SEO tokens (Fixes #452)
- Sanitize URL before outputting in meta (Fixes #454)
- Fixed absolute URL including token query parameter (Fixes #457)
- Fixed error on Shopify plugin products (#456 via @ttempleton)
- Fix robots always injecting no-index (Fixes #432)
- Fix redirect page 500 error (Fixes #448)
- Remove HTML from fail toast (Fixes #449)
- Fix redirect deletion (Fixes #441)
- Fix SEO field focus keywords on Craft 4 (Fixes #431, #407, via @dyerc)
- Deleted sites are no longer included in the redirect select (via @thomascoppein)
- Fix env check (Fixes #432, via @jacotijssen & @thomascoppein)
- Fix custom fields not being evaluated in dynamic syntax (Fixes #415, via @juban)
- Fix sitemap render issue (Fixes #409, via @niektenhoopen)
- Fix permission settings (Fixes #399, #401, via @niektenhoopen)
- Fix GraphQL support
- Support Craft v4 (via @niektenhoopen)
- Fix error when trying to fetch social image (Fixes #358, via @MDXDave)
- Up Craft CMS requirement to
^3.5
(Fixes #341)
- Fix JS error on sitemap admin (Fixes #325)
- SEO will now add
noindex
to all environments except production, regardless ofdevMode
(via @nstCactus)
- Fix sitemap error if some sites are disabled
- Fix an exception when an entry type has multiple SEO fields (via @nstCactus)
- Fix custom SEO objects always using fallback image (via @jmauzyk)
- Fix migration issue when upgrading to 3.7 on MySQL
- Added support for product types in sitemap (via @boboldehampsink)
- Set Twitter image transform to a 2:1 ratio (via @icreatestuff)
- Hide the "Settings" links when admin changes are disallowed (via @nstCactus)
- Fix getSettingsHtml function to be compatible with Craft 3.5 (via @bendesilva)
- Fix error in retrieving preview if no SVG tags are present on the page (via @tschoffelen)
- Fix ErrorException error on sections XML (via @jesuismaxime)
- Add gql field-type definition for Craft 3.3 GraphQL implementation (via @FreekVR)
- Fix incorrect content in fields on redirect edit (Fixes #309, #314)
- Fix missing order column install issue (Fixes #303)
- Add redirect ordering (Closes #274)
- Fix JS error when
%
appeared in SEO snippet text
- Replace SVG's while keeping text intact (Fixes #197)
- Fix social images not falling back to default (Fixes #188, #247)
- Fix slug showing incorrect site URL (Fixes #237)
- Fix SEO snippet showing homepage slug (Fixes #270)
- Fix snippet issue when using protocol relative site URLs (Fixes #249, #239)
- Fix incorrect canonical URL when site is behind a CDN (Closes #268)
- Fix sitemap not filtering elements by type correctly (Fixes #275)
- Improve support for diacritics
- Fix an issue when legacy SEO data is just the title string
- Fix issues with slug on single entries (Fixes #233, #228)
- Fis issue with umlauts in optimisation checklist (Fixes #232)
- Fix bulk redirect issue when add to all sites (Fixes #154)
- Added date added column to redirects (Closes #160)
- Redirects will also be triggered by
{% exit 404 %}
in templates (Fix #206 via @domstubbs)
- Redirect add forms will no longer be reset after adding a redirect. Only but the URI fields will be cleared.
- Fix bulk importing of redirects (Fixes #154)
- Fix social title not syncing for new entries
- Fix snippet url preview bug (Fix #196 via @domstubbs)
- Fix redirect uri case sensitivity issue with MySQL (Fixes #116)
- Add OG image width & height meta tags (Fixes #220)
- Update minimum Craft CMS requirement to 3.2.x
- Social titles and descriptions can now be edited independently of the main snippet (Fixed #185)
- Fix entry preview error on keyword checklist (Fixes #224)
- Fix SEO field error when changing entry types (Fixes #215)
- Fix entire image meta data being saved with SEO field (Fixes #142)
- Fix sitemap error when SEO field doesn't have any advanced data (Fixes #96)
- Fix keyword checklist reading title length incorrectly (Fixes #199)
- Fix social meta outputting encoded characters (Fixes #198)
- Fix social description not updating correctly (Fixes #213)
- Fix multi-word keyword not checking slug correctly (Fixes #152)
- Fix CraftQL integration (Fixes #187)
- Fix SEO field erring in globals (Fixes #226)
- Fix section and type not being available in tokens (Fixes #221)
- Improve alt text judgment in keyword checklist
- Check for keyword in first paragraph of body, main, and article tags
- Improve page meta field instructions in SEO settings
- Ensure canonical is always an absolute URL (Fixes #202)
- Added support for Solspace Calendar. #184
- Fixed upgrade not correctly carrying over custom titles. #183
- Fixed undefined index error when creating a new element containing an SEO field. #176
- Fixed error when using the SEO field in a category. #177
- Fixed sitemap undefined index error. #178
- Increased debounce timeout when watching for input changes in fields.
- Fixed special characters being unnecessarily encoded when being out put in meta. #173
- Fixed JS error in SEO snippet when the entry doesn't have a slug.
- Excess whitespace removed from social title when dynamically updated.
- Fixed tokens sometimes showing as empty incorrectly.
- Fixed number of SEO snippet token re-renders from increasing exponentially. #175
- Added console command to manually trigger the upgrade to the new data format
./craft seo/upgrade/to-new-data-format
.
- Fixed issue when updating an SEO field without a suffix.
- Fixed readonly property error when running the upgrade task.
{warning} This update changes how SEO meta is stored. We STRONGLY recommend backing up your site before installing this update.
{warning} This update contains some potentially breaking changes. If you use a custom
meta.twig
template you should review the changes here.
- Advanced option for overriding the canonical URL.
- Added
rel="canonical"
header
- Craft 3.1.0 is now required.
- The SEO field now uses a token-based system for the title, allowing for only certain parts of the title to be editable and adding twig support for pre-filling from fields! (Existing meta will be automatically upgraded)
- The SEO field description can now be pre-filled using twig.
- Robots meta tags are now rendered in the SEO meta. Useful for statically cached sites!
- Social titles and descriptions are no longer editable. Images are still editable. Improved social meta management is planned for a future update.
- SEO meta now correctly renders across multi-sites and locales.
- Fixed keyword checklist compatibility issue in Craft 3.1.
- Locale - replace w/ _ #143
- Fixed incorrect og:site_name #139
- The social image "no volume" warning now explicitly states the need for volumes with public URLs #115
- Better handling of robots header.
- Whitespace now trimmed from title when checking SEO score (via @Rias500)
- Fixed a server error when generating the sitemap sub-maps.
- Redirects page no longer throws a twig error if there are no redirects for all sites. #134
- Fixed a bug when saving a new element with an SEO field.
- Fixed a bug when adding a redirect to all sites.
{warning} This update contains some potentially breaking changes. If you use a custom
meta.twig
template you should review the changes here.
- Added
getSeoField($handle = 'seo')
Twig function for Site templates. - Added global settings for Facebook App ID and Twitter handle.
- SEO field data is now used via an
SeoData
model, rather than an array. This may cause breaking changes, especially if you have a custommeta.twig
template! - The default
robots.txt
now disallows all when the environment is NOT set to'production'
. This will not have an effect for existing installs (where the SEO settings have been saved). To manually update yourrobots.txt
, replace the line{% if craft.app.config.general.devMode %}
with{% if craft.app.config.env != 'production' %}
. #122 - Redirects are no longer case-sensitive #116
- SEO no longer errors if a social image doesn't have a public url. #131
- Protocol relative image URLs are now handled correctly. #125, #126 (via @monachilada)
- The SEO meta field will now look for product and category elements when searching for the SEO field. #128
- Redirects now support full PCRE syntax. #119, #127
- Redirects can now be specified on a per-site basis!
craft.seo.custom
social images now fallback to the default social image from global settings. #113- Backwards compatibility SEO v1 keywords
- Fixed bug where some requests would 404 when injecting 🤖's #130
- SEO robots no longer return empty values #110
- Text in the keyword input will automatically be turned into a tag on blur #114
Heads up: This update includes changes to the SEO meta.twig
. If you are using a custom version you can review the changes here.
- Fixed field settings throwing deprecation warning #109
- Fixed invalid sitemap urls
- Robot lightswitches now have a min-width #103
- Fixed TypeError in SEO variable when social image doesn't have a transform URL #101
- Fixed SEO hook throwing an error when a populated SEO field was removed from the current element #99
- Redirect list moved below "Add Redirect" fields #107
- Empty / suffix only title fields will now populate with the element title
- Fixed bug where
robots.txt
would not be accessible when not logged in.
Heads up: This update includes changes to the SEO meta.twig
. If you are using a custom version you can review the changes here.
- Fixed SEO field erroring after upgrade from Craft 2 #92
- Fixed sitemap erroring when entry doesn't have an SEO field #96
og:site_name
now usesseo.title
instead ofsiteName
#95 (via @urbantrout)- Canonical meta tag now uses
absoluteUrl
#94 (via @matthiaswh) - Social URLs in
meta.twig
now useabsoluteUrl
- Fixed user permissions not being checked correctly #93
- Fixed broken
robots.txt
code editor. #90 - Fixed sitemaps having wrong Content-Type header. #91
- Added a "Use suffix as prefix" option to the SEO field settings. For those clients.
- The sitemap settings now show all sections, regardless of what sites they are enabled on.
- Fixed bug where Craft would 500 error when robots were injected for an element without an expiry date (via @saylateam)
- Fixed a bug where the Craft edition referenced no longer existed #81 (via @andris-sevcenko)
- Fixed a bug where editing entries with an SEO field would error if the current site doesn't have a base URL.
- Fixed a bug that would cause Element API to error when no robots have been set.
- You can now manage your sites 🤖 on a site-wide or per-field basis
- The
X-Robots-Tag
header is added if you've set any robots - If the current entry has an expiry date, the
unavailable_after
directive will be added automatically - The
none
andnoimageindex
directives are automatically added to all pages when indevMode
. No more accidental indexing of development sites!
- The
- You can now manage your
robots.txt
file from the SEO settings!
- Improved the settings page (now with 300% more tabs).
- Fixed sitemap dynamic urls throwing errors
- Sitemaps no longer show "headers already sent" warnings
- Fixed the keywords checklist not realising content had changed on the page
- The keywords checklist now knows what spaces are and count words accordingly
- Fixed keywords checklist not working after live preview is opened
- Fixed bug where fallback social images would cause SEO field to error
- Keyword density now works correctly for keywords containing more than one word
- Fixed a bug where deleting a keyword would occasionally cause a JS error
- Added option to hide the social tab in the SEO field
- It's now possible to pass social media meta to
craft.seo.custom
- Fixed first paragraph check returning both positive and negative
- Snippet description now has minimum height
- Fixed error when installing on Craft Personal
- Initial Craft 3 Release