WordPress SEO by Yoast
Improve your WordPress SEO: Write better content and have a fully optimized WordPress site using the WordPress SEO plugin by Yoast.
WordPress out of the box is already technically quite a good platform for SEO, this was true when I wrote my original WordPress SEO article in 2008 and it's still true today, but that doesn't mean you can't improve it further! This plugin is written from the ground up by WordPress SEO consultant and WordPress developer Joost de Valk to improve your site's SEO on all needed aspects. While this WordPress SEO plugin goes the extra mile to take care of all the technical optimization, more on that below, it first and foremost helps you write better content. WordPress SEO forces you to choose a focus keyword when you're writing your articles, and then makes sure you use that focus keyword everywhere.
Write better content with WordPress SEO
Using the snippet preview you can see a rendering of what your post or page will look like in the search results, whether your title is too long or too short and your meta description makes sense in the context of a search result. This way the plugin will help you not only increase rankings but also increase the click through for organic search results.
The WordPress SEO plugins Linkdex Page Analysis functionality checks simple things you're bound to forget. It checks, for instance, if you have images in your post and whether they have an alt tag containing the focus keyword for that post. It also checks whether your posts are long enough, if you've written a meta description and if that meta description contains your focus keyword, if you've used any subheadings within your post, etc. etc.
The plugin also allows you to write meta titles and descriptions for all your category, tag and custom taxonomy archives, giving you the option to further optimize those pages.
Combined, this plugin makes sure that your content is the type of content search engines will love!
Technical WordPress Search Engine Optimization
While out of the box WordPress is pretty good for SEO, it needs some tweaks here and there. This WordPress SEO plugin guides you through some of the settings needed, for instance by reminding you to enable pretty permalinks. But it also goes beyond that, by automatically optimizing and inserting the meta tags and link elements that Google and other search engines like so much:
Meta & Link Elements
With the WordPress SEO plugin you can control which pages Google shows in its search results and which pages it doesn't show. By default, it will tell search engines to index all of your pages, including category and tag archives, but only show the first pages in the search results. It's not very useful for a user to end up on the third page of your "personal" category, right?
WordPress itself only shows canonical link elements on single pages, WordPress SEO makes it output canonical link elements everywhere. Google has recently announced they would also use
rel="prev" link elements in the
head section of your paginated archives, this plugin adds those automatically, see [this post](http://yoast.com/rel-next-prev-paginated-archives/ title="rel=next & rel=prev for paginated archives") for more info.
WordPress SEO has the most advanced XML Sitemaps functionality in any WordPress plugin. Once you check the box, it automatically creates XML sitemaps and notifies Google & Bing of the sitemaps existence. These XML sitemaps include the images in your posts & pages too, so that your images may be found better in the search engines too.
These XML Sitemaps will even work on large sites, because of how they're created, using one index sitemap that links to sub-sitemaps for each 1,000 posts. They will also work with custom post types and custom taxonomies automatically, while giving you the option to remove those from the XML sitemap should you wish to.
Because of using XSL stylesheets for these XML Sitemaps, the XML sitemaps are easily readable for the human eye too, so you can spot things that shouldn't be in there.
Are you being outranked by scrapers? Instead of cursing at them, use them to your advantage! By automatically adding a link to your RSS feed pointing back to the original article, you're telling the search engine where they should be looking for the original. This way, the WordPress SEO plugin increases your own chance of ranking for your chosen keywords and gets rid of scrapers in one go!
If your theme is compatible, and themes based on Genesis or by WooThemes for instance often are, you can use the built-in Breadcrumbs functionality. This allows you to create an easy navigation that is great for both users and search engines and will support the search engines in understanding the structure of your site.
Making your theme compatible isn't hard either, check these instructions.
Edit your .htaccess and robots.txt file
Using the built-in file editor you can edit your WordPress blogs .htaccess and robots.txt file, giving you direct access to the two most powerful files, from an SEO perspective, in your WordPress install.
SEO and Social Media are heavily intertwined, that's why this plugin also comes with a Facebook OpenGraph implementation and will soon also support Google+ sharing tags.
This WordPress SEO plugin, unlike some others, is fully Multi-Site compatible. The XML Sitemaps work fine in all setups and you even have the option, in the Network settings, to copy the settings from one blog to another, or make blogs default to the settings for a specific blog.
Import & Export functionality
If you have multiple blogs, setting up plugins like this one on all of them might seem like a daunting task. Except that it's not, because what you can do is simple: you set up the plugin once. You then export your settings and simply import them on all your other sites. It's that simple!
Import functionality for other WordPress SEO plugins
If you've used All In One SEO Pack or HeadSpace2 before using this plugin, you might want to import all your old titles and descriptions. You can do that easily using the built-in import functionality. There's also import functionality for some of the older Yoast plugins like Robots Meta and RSS footer.
Should you have a need to import from another SEO plugin or from a theme like Genesis or Thesis, you can use the SEO Data Transporter plugin, that'll easily convert your SEO meta data from and to a whole set of plugins like Platinum SEO, SEO Ultimate, Greg's High Performance SEO and themes like Headway, Hybrid, WooFramework, Catalyst etc.
Read this migration guide if you still have questions about migrating from another SEO plugin to WordPress SEO.
WordPress SEO Plugin in your Language!
Currently a huge translation project is underway, translating WordPress SEO in as much as 24 languages. So far, the translations for French and Dutch are complete, but we still need help on a lot of other languages, so if you're good at translating, please join us at translate.yoast.com.
Be sure to also check out the News SEO module if you need Google News Sitemaps. It tightly integrates with WordPress SEO to give you the combined power of News Sitemaps and full Search Engine Optimization.
For more info, check out the following articles:
- WordPress SEO - The definitive Guide by Yoast.
- Once you have great SEO, you'll need the best WordPress Hosting.
- The WordPress SEO Plugin official homepage.
- Other WordPress Plugins by the same author.
- Follow Yoast on Facebook & Twitter.
The WordPress SEO plugin general meta box. You'll see this on edit post pages, for posts, pages and custom post types.
Some of the sites using this WordPress SEO plugin.
The WordPress SEO settings for a taxonomy.
The fully configurable XML sitemap for WordPress SEO.
Easily import SEO data from All In One SEO pack and HeadSpace2 SEO.
Example of the Page Analysis functionality.
The advanced section of the WordPress SEO meta box.
- Upload the
wordress-seofolder to the
- Activate the WordPress SEO plugin through the 'Plugins' menu in WordPress
- Configure the plugin by going to the
SEOmenu that appears in your admin menu
- Properly fix security bug that should've been fixed in 1.4.5.
- Move from using several $options arrays in the frontend to 1 class wide option.
- Instead of firing all plugin options as function within head function, attach them to
wpseo_headaction, allowing easier filtering and changing.
- Where possible, use larger images for Facebook Opengraph.
- Add several filters and actions around social settings.
- Fix a possible fatal error in tracking.
- Bug fixes:
- Fix security issue which allowed any user to reset settings.
- Allow saving of SEO metadata for attachments.
- Set the max-width of the snippet preview to 520px to look more like Google search results, while still allowing it to work on lower resolutions.
- Remove the shortlink http header when the hide shortlink checkbox is checked.
- Added a check on focus keyword in the page analysis functionality, checking whether a focus keyword has already been used before.
- Update how the tracking class calculates users to improve speed.
- Fix changelog for 1.4.3
- Fix activation bug.
- Updated es_ES, id_ID, he_IL.
- Register core SEO menu at a lower than default prio so other plugins can tie in more easily.
- Remove alt= from page analysis score divs.
- Make site tracking use the site hash consistently between plugins.
- Improve popup pointer removal.
- Made the sitemaps class load in backend too so it always generates rewrites correctly.
- Changed > to /> in class-twitter.php for validation as XHTML.
- Small fix in metabox CSS for small screens (thx Ryan Hellyer).
- Load classes on plugins_loaded instead of immediately on load to allow WPML to filter options.
- Updated bs_BA, cs_CZ, da_DK, de_DE, fa_IR, fr_FR, he_IL, hu_HU, id_ID, it_IT, nl_NL, pl_PL, pt_BR, ru_RU and tr_TR
- Updated .pot file
- Updated bg_BG, bs_BA, cs_CZ, fa_IR, hu_HU, pl_PL & ru_RU
- Focus keyword check now works again in all cases.
- Fix typo in Video SEO banner.
- Don't show banners for plugins you already have.
- i18n & documentation:
- Updated Hebrew (he_IL)
- Updated Italian (it_IT)
- Updated Dutch (nl_NL)
- Updated Swedish (sv_SE)
- Updated some strings to fix typos.
- Removed affiliate links from readme.txt.
- Fixed a bug in saving post meta details for revisions.
- Prevent an error when there are no posts for post type.
- Fix the privacy warning to point to the right place.
- Slight performance improvement in functionality by not resetting query when its not needed (kudos to @Rarst).
- Slight performance improvement in options call by adding some caching (kudos to @Rarst as well).
- Changed inner workings of search engine ping, adding YOAST_SEO_PING_IMMEDIATELY constant to allow immediate ping on publish.
- Changed design of meta box, moving much of the help text out in favor of clicking on a help icon.
- Removed Linkdex branding from page analysis functionality.
- Bug with revisions in XML sitemap for some weird combinations.
- Improved logic for rel=publisher on frontpage.
- Allow variables in meta description for post type archive.
- Improved counting of images for page analysis.
- updated Turkish (tr_TR)
- updated Russian (ru_RU)
- updated Indonesian (id_ID)
- updated French (fr_FR)
- updated Czech (cs_CZ)
- added Japanese (ja)
- Regex annoyances anyone? Sigh. Bug fixed.
- Added missing filter for meta box priority.
- Fixed bug in JS encoding.
- Bug in page analysis regex.
- Fix bug in custom field value retrieval for new drafts.
- Fix bug in meta box value for checkboxes (only used currently in News extension).
- Remove redirect added in 1.3.3 as it seems to cause loops on some servers, will investigate later.
- Add option to filter
wpseo_admin_pagesso more pages can use WP SEO admin stylesheets.
- Prevent notice for images without alt tags.
- Use mb_string when possible.
$wpdb->prepareall queries that need preparing.
- Fix wrong escaping in admin pointers.
- Make %%currentdate%% and %%currenttime%% variables respect WP date format settings.
- Add %%currentday%% format.
- Force remove Jetpack OpenGraph.
- Fix the weird addition of
noindex, nofollowon URLs with ?replytocom that was added in 3.5.
- Force XML sitemap to be displayed on the proper domain URL, so XSLT works.
- Updated wordpress-seo.pot
- Updated Turkish (tr_TR) filename.
- Updated Spanish (es_ES) translation.
- Fixed bug where non-admin users couldn't save their profile updates.
- Fixed bug with the same OpenGraph image appearing multiple times.
- Fixed bug that would prevent import and export of plugin settings.
- Try to do a redirect back after saving settings.
- Properly allow for attachment pages in XML sitemaps, default them to off.
- Fixed annoying bug where checkboxes wouldn't display as "checked" even when the value was set to true.
- Show post type name and taxonomy name (as opposed to label) next to labels in XML sitemap settings to more easily identify post types and taxonomies.
- Switch tracking to a daily cronjob instead of an admin process to prevent tracking from slowing down admin interface.
- Focus keyword detection now properly works for diacritical focus keywords as well.
- Properly apply filters to meta desc and titles in admin grid.
- Properly detect new versions of Facebook plugin too.
- Allow changing of the number of posts per XML sitemap, to prevent memory issues on certain installs.
- Some of that escaping was too aggressive.
- Fix somewhat too aggressive escaping of content.
- Added notice text for non-existing .htaccess file / robots.txt file.
- Long list of small fixes and improvements to code best practices after Sucuri review. Fixes 3 small security issues.
- Updated .pot file
- Updated Danish (da_DK), Indonesian (id_ID), Chinese (zh_CN), Russian (ru_RU), Norwegian (nb_NO), Turkish (tr_TK), Hebrew (he_IL) and Persian (fa_IR).
- Added Arabic (ar), Catalan (ca) and Romanian (ro_RO).
- Fixed %%category%% and %%tag%% and some other variables that weren't working since 18.104.22.168.
- Revert gplus changes in 22.214.171.124 that were causing issues.
- Fix a tracking timeout.
- Fix a bunch of notices throughout variables functions.
- Fixed a bug for MultiSite due to a missing attribute in calling
- Updated Hebrew (he_IL), Dutch (nl_NL) French (fr_FR), Czech (cs_CZ), Italian (it_IT), Brazilian Portuguese (pt_BR).
- Added Norwegian (nb_NO) and Portuguese (pt_PT).
- Added a
wpseo_robotsfilter for the robots meta tag.
- Fixed integration with the Facebook plugin.
- Fix for double title issues with themes that filter
wp_title, by having WP SEO filter a bit later in the process (but no too late because the genesis wrap filter is on 30).
- Improved Twitter Card functionality: twitter meta tags now appear above OpenGraph meta tags.
- Updated a bunch of languages: da_DK, de_DE, es_ES, fa_IR, fr_FR, he_IL, hu, hu_HU, it_IT, nl_NL, pt_BR, ru_RU, tr_TK, zh_CN.
- Added Czech (cs_CZ) and Spanish - Venezuela (es_VE).
- Updated all the languages in hopes to fix the empty text strings.
- Added basic translations for Danish (da_DK) and Finnish (fi).
"Fix" for tracking popup with empty buttons.
- French fr_FR
- Dutch nl_NL
- Turkish tr_TK
- Fixed one s, that caused a fatal error. Sigh.
- Bug fixes:
- Fix for images not showing up in XML sitemap.
- Fix to allow breadcrumb titles to once again be set for CPT archive pages.
- Prevent empty rel=publisher link from being put out.
- Several fixes to the strip category base settings.
- Several fixes to the hardcoded meta description recognition code.
- Prevent title testing from priming the cache.
- Prevent upgrading from a recent version to force a title test, no longer overrides manual force rewrite settings.
- Fix paginated singular post / page issue when single isn't paginated.
- No longer show .htaccess editor when on NGINX.
- Move tracking to its own file, switching to my own tracking instead of PressTrends so more specific options can be tracked.
- Tracking can now be enabled and disabled from the SEO Dashboard screen.
- Added rewrite rules for NGINX to FAQ.
- Now showing rewrite rules for NGINX on XML sitemaps settings page.
- Fixed compatibility with 3.3 and lower.
- Added (optional) PressTrends tracking to get some more info on common configurations of WP to test for.
- Made config page loading even faster.
- Added a link to my Amazon wishlist to the plugin sidebar in the admin ;)
- Added a check to see whether your theme contains a hardcoded meta description, and options to remove it.
- Added a Google+ Publisher input option for the homepage.
- Added the option to allow showing the date in the snippet preview per post type.
- Removed aggressive cache deleting in the XML sitemaps. Could cause issues with some plugins but should increase speed.
- Force the XML Sitemap to return a 200 OK Header.
- Deprecated functionality:
- The breadcrumbs functionality no longer automatically hooks as this was giving too many issues.
- Bug fixes:
- Prevent adding trailing slash on paged posts when force trailing slash on categories and tags is on.
- Breadcrumbs now properly use
- Simplify shortcode stripping, to make it actually work.
- Prevent several notices in XML Sitemaps class.
- Textual / documentation changes:
- Add a "without @" notice to the Twitter username input field.
- Bug fixes:
- Make sure html entities are decoded and if needed re-encoded to XML entities for the XML sitemap.
- Fix infinite loop in sub-category or other sub-taxonomy archive page breadcrumbs.
- Fix breaking rewrite for categories when strip category is enabled.
- Fix non-global classes that should be global.
- Updated French translation.
- Updated Bosnian language code and deleted unused Bosnian version.
- Updated Bulgarian and deleted unused Bulgarian
- Updated and completed it_IT and pt_BR translations.
- Bug fixes:
- Properly restore $wp_query after running header functionality, so we're not breaking badly built themes.
- Make the title test helper function only return the test title to the right WordPress user-agent.
- Fix for slug saving that should help interoperability with other slug-enhancing / changing functions.
- Fix wrong homepage titles with 12345 in them because of bug in 1.2.2.
- Added text domains on some strings that were missing it.
splitis deprecated in newer PHP versions.
- Properly deal with shortcodes with text inbetween.
- Remove several functions that are no longer used.
%%page%%only outputs '
%%sep%%Page 2 of X' when not on page 1. If you want it to show up on Page 1 you can use
%%pagenumber%%. This both works for paginated posts & pages too.
- Allow for rel=author on sites with static frontpage too.
- Massive updates to how parts of the plugin are loaded, leading to a reduction of memory usage in WordPress admin of 1~2 MB.
DISALLOW_FILE_EDITconstants. When set to true, edit files menu option won't show.
- Added support for image galleries in the page analysis functionality, alt tags from images in galleries are now parsed too.
- Add an option to remove the
replytocomvariables from comment links (they're bloody stupid).
- Added variables
%%pt_plural%%which output the single and plural label of the current post type (useful for post type archives).
- Made the default settings smarter, they'll now use better titles and will set titles for each public post type, post type archive and taxonomy.
- Updates to introductory tour.
- Added PHPdoc to the entire plugins codebase.
- Refactored all of the code not using WordPress code style.
- Breadcrumbs now use RDFA and have been completely rewritten for speed and more filter options.
- Updated Russian translation.
- Better language codes for Hungarian and Bulgarian added.
- Updated .pot file.
- Bug fixes:
- Fixed possible bug on multi site.
- Fixed a bug in alt & title elements for XML sitemaps.
- Fix to force title rewrites in two places: call
wp_reset_queryfor stupid themes and plugins.
- Fixed bug in saving some options.
- Fixed OpenGraph bug where default image wouldn't be used for post without images.
- Prevent error on division by zero when swapping around text.
- Prevent notice in title_test and also fix possible bugs.
- Properly escape the delimiter too in all
- Don't show SEO filter on upload.php.
- Only count alt tags in keyword density and word count calculations, leave out title attributes.
- Rewrote the force rewrite test to be simpler and better.
- New icons for the analysis functionality.
- Twitter card functionality.
- Removed 200 lines of code from OpenGraph class because I could just inherit it from the parent class. d0h!
- Added a bunch of translations; bg, bos, bs, bul, es_ES, hu, hun, id_ID, pl_PL, pt_BR.
- Updated another bunch: de_DE, fr_FR, he_IL, it_IT, nl_NL, ru_RU, sv_SE.
- Some small bug fixes.
- Made loading the TextStatistics class conditional on the existence of said class.
- Added a posts filter option for SEO quality in the edit posts / pages overview.
- Added a filter
wpseo_use_page_analysisthat disables the page analysis functionality when false is returned.
- Added a filter
wpseo_show_date_in_snippetthat disables the date in the preview snippet when false is returned.
- Bugs fixed:
- Trim the focus keyword before running page analysis tests.
- Title's should be (and now is) Titles.
- Fixes to Theme integrations for Woo, Genesis and Thematic.
- Enhancement to force rewrite title test.
- Bugs fixed:
- ereg_replace != preg_replace ; in other words: alt and title tags for images in xml sitemap fixed.
- Image size for OpenGraph now defaults to medium for thumbnail image.
- Selecting a Facebook App as the admin of your site now actually works.
- Saving the SEO -> Dashboard settings no longer makes you loose the SEO -> Social settings.
- Tweaks to clean slug functionality.
- Fix for UTF-8 terms in titles and descriptions.
- Fixed bug where empty but saved title template settings could lead to empty homepage title on blogs with a static front page.
- Fixed several bugs around page numbers in titles and descriptions.
- Prevented an error in the opendir functionality for WP SEO modules.
- Allow ';' in focus keyword.
- Don't double encode characters in suggest functionality.
- Don't remove non-alphanumeric values for keyword checks.
- Fixed a bug in snippet preview occurring when content was shorter than max snippet length.
- Fixed keyword count in content for cases where keyword was surrounded by parentheses and some other characters.
- Loads of Regex Fu to improve keyword bolding.
- Activation and deactivation handlers properly specified.
- WP Super Cache now properly emptied on update of settings.
- Fixes to OpenGraph images for homepage.
- Fixed a notice in OpenGraph class on 404 pages.
- Fixed notices in OpenGraph admin when selecting Facebook app as admin.
- Fixed a bug where half the Page analyses wouldn't work when the visual editor is disabled.
- Changed the mime type of the XSL file for XML sitemaps to text/xml, so Firefox will display them properly.
- Made sure the default OpenGraph image will always show up when there's no other image.
- Updated tablesorting JS used in XML Sitemaps.
- Added a page level "score" for the site analysis functionality.
- Allow sitewide noindexing of post types and taxonomies with post- and term-level overrides.
- Automatically check whether force rewrite needs to be enabled.
- Upon activation, XML sitemaps are automatically enabled.
- Upon activation, title templates are pre-filled with sensible defaults.
- Plugin now auto-detects whether titles need to be force-rewritten (using output buffering) or not.
- Redesign of the admin, removal of the indexations page and renaming the Titles page into Metas & Titles page.
- Allow noindex-following per custom taxonomy and custom post type.
- No longer show non-public post types on the Titles & Metas page.
- On activation, W3 Total Cache or WP Super Cache cache gets cleared automatically.
- Added an uninstall handler, deleting the plugin through the WP backend will now delete options from the DB too.
- Added the option to display custom taxonomy in titles and descriptions, use
%%ct_<custom-taxname>%%for a comma separated list or
%%ct_<custom-taxname>%%single%%for only one taxonomy term.
- Added the option to display custom taxonomy descriptions in post description fields, use
- Allow for 'Page x of x' to be localized too.
- Force the query for the current page to be used instead of the query that a bad plugin or even theme was using by calling
wp_reset_querybefore the header functionality.
- If you're a Woothemes user and you activate WordPress SEO, the "use 3rd party plugins data" checkbox will be checked on upon activation.
- Non front page blog pages now have a title template:
%%title%% %%page%% - %%sitename%%if they don't have a specific SEO title and there is no page template.
- Pinging search engines on post of new content now moved to cron to prevent lag.
- Only embed images in the XML sitemap that match the main domain, subdomains should not matter but images from other domains are now ignored.
- Fixed a bug where homepage wouldn't be in the XML sitemap when there are no posts, yet the homepage is set to display recent posts.
- API Improvements:
- Added a filter to allow adding URLs to specific XML sitemaps, see this thread. The filter is
- Added a filter for the meta keywords,
- Added a filter to allow disabling
- Added a filter
wpseo_xml_sitemap_img_srcto allow changing the hostname of images, most common use case is to force them to the CDN.
- See the new WordPress SEO API docs.
- Added a filter to allow adding URLs to specific XML sitemaps, see this thread. The filter is
- Sigh... Sorry about that.
- Bugs fixed / Changes:
- Fix the clean slug function to not freak people out and remove chars.
- Fixed a couple of notices.
- Allow '+' in focus keyword.
- A load of i18n fixes (including a new POT file).
- Bugs fixed / Changes:
- Fixes issue with un-paginated canonicals for paged single posts / pages.
- Fixes %%page%% variable to work in title & description template on paginated singular post(type)s.
- Allow - in focus keyword.
- Removed the option to use a Facebook page as an admin in the Facebook OpenGraph, as Facebook deprecated that.
- Force OpenGraph locale to lowercase.
- Catch some weird locales and convert them to proper Facebook supported iso_country versions.
- Now adding all the images in a post with an og:image tag, so people can more easily share the right image.
- Allow regex specific characters in the focus keyword for the Page Analysis checks.
- Add proper (and i18n compatible) stop word removal.
- Removed code to add noindex to login page as that's now in core for long enough.
- Fixed several notices.
- When a static homepage has no SEO title, default to the site's name + description.
- Only show images once in OpenGraph tags.
- Prevent a timeout on retrieving term meta.
- Don't do next / prev links on the homepage for Genesis based themes as that leads to trouble.
- XML Sitemaps & feeds:
- Properly fix featured image showing up in XML Sitemap.
- Optimized the main query for XML sitemaps per this thread.
- Switch feed noindexing from
xhtml:metatags to X-Robots-Tag HTTP headers to prevent feed display issues.
- Force XML Sitemap descriptions for images to be clean to prevent XML parse errors.
- Tiny change in CSS for explanatory text in XSL.
- New filters:
- Add filter
wpseo_localefor the locale in the opengraph settings.
- Add filter
wpseo_metabox_prioto allow WP SEO metabox priority to be changed.
- Add filter
- Removed the "Other Notes" tab from the plugin page, enough tabs there already.
- Added %%cf_ options to config page for titles.
- Fixed the Yoast Facebook URL.
- Changed plugin support link to the new support URL format.
- Tiny fix to showing meta description on posts page.
- Fix for showing proper link to bug tracker.
- Fix for redirecting attachment pages when they don't have a parent.
- Fix for titles of custom post type pages.
- Dozens more tiny bugfixes.
- Removing the Dashboard widget.
- Removed the canonical redirect as that was screwing with people's setups (and minds).
- Fix for the blog homepage title, description etc.
- Added several filters for use in the soon to be released Video SEO module.
- Change to XSL for XML Sitemaps.
- Non-canonical hostnames (like example.com when site setting is http://www.example.com) now 301 redirect to canonical hostname.
- Static frontpages now added to XML sitemap with images if it has them, same for interior blog pages.
- No longer add redirected URLs to the XML Sitemap.
- Plugin now properly adds images in galleries to the XML Sitemap too.
- Fixed a bug in home page title logic, affecting blogs with a static front page and a separate posts page, who were unable to set the posts page's title.
- Fixed a bug in the OpenGraph admin implementation.
- Google Suggest works again, and properly this time.
- Using entities in the snippet preview title & description field now still renders a correct "chars left" count.
- Replaced the last single quotes with double quotes for meta fields, apparently Bing wouldn't verify because of the single quotes in the verification line.
- Added option to verify your site with Alexa, as a lot of people requested this.
sprintfbug in page analysis.
- Fixed bug that caused inability to edit / save the search page title.
- Fixed bug that caused inability to edit / save the "parent" blog in multisite settings.
- Removed ability to edit WP Super Cache .htaccess file as it doesn't seem to be there anymore.
- Removed Yahoo! Site Explorer.
- Biggest change: entire plugin now supports localization, testing can be done by dropping your properly named .mo file (wordpress-seo-nl_NL.mo for instance) into the languages dir.
- Added Dutch, German, French, Hebrew, Italian, Russian and Swedish translations.
- Show proper post type names in admin menu for disabling editor box and hide non-public post types (props Nacin).
- Disabling the Advanced Editor now only disables it for non admins.
- Replaced single quotes with double quotes in meta description and canonical, to please Danny Sullivan.
- Fixed issue with images in XML sitemaps.
- Added Social menu item.
- Lots of changes to the Facebook integration:
- Added the locale.
- Added default image.
- Added homepage image & description.
- New method of adding Facebook Admins.
- Removed all nofollow settings, login register links are now nofollow by default, all other functionality removed as it doesn't make sense anymore.
- Cosmetic changes: added some Yoast links to backend widget in the right sidebar.
- Switched text domain from a constant to a proper string 'wordpress-seo'.
- Removed the now unneeded extra styling for admin pointers.
- Fixed a notice in 3.3beta with caused by
wp_reset_querybeing called too early.
- Added several filters to allow WPML (and other plugins) to create XML Sitemaps for other languages.
- Minor updates to the plugin tour, removing the "Stop tour" button, "Close" now closes until you manually restart.
- This release is dedicated to removing options and setting defaults instead. Specifically, the following settings are now defaults without options to change them:
- Images are now always included in the XML sitemap as Bing no longer breaks on them.
- Pinging Google and Bing is now a default action as that's the whole point of having XML sitemaps.
- RSS feeds are now always noindex, followed. No search engine should ever list an RSS feed as a result in the resultpages.
- Admin, login and registration pages are always noindexed now for the same reason.
- Search result pages are now always noindex, follow.
- Subpages of the homepage are now also noindex, follow. It just doesn't make sense to index,follow those especially with the new rel="prev" and rel="next" changes.
- The option to add
noarchivemeta tags sitewide has been removed. No one in his right mind would want to do that, and if you do, then adding the robots meta to your template yourself should be doable.
- Pinging search engines with your RSS feed is no longer part of this plugin (as its unneeded because the XML sitemaps do that).
- UTF-8 characters in RSS footer no longer break.
- Added the option to use the author name and link in the RSS header and footer using %%AUTHORLINK%%.
- No longer show the admin bar SEO menu for subscribers.
- Some style changes to make the backend look nicer in WP 3.2 and 3.3.
- Bug with importing settings fixed.
- No longer redirect attachments that have no parent.
- Correctly grab thumbnail for OpenGraph settings.
- Pages now get the correct priority (0.8).
- Added the option to noindex or completely disable post format archives.
- Fixed some edge cases with rel=next and rel=prev, particularly relating to a paginated page as a frontpage.
- Updated the snippet preview so the date part of the snippet has the right color.
- Fixed a bug in the update routine that could cause errors in the backend.
- Enabled OpenGraph meta box on edit screens, first "stab".
- Removed all rel=index, rel=prev etc references that WP core currently uses as they're wrongly implemented.
- Added rel=prev and rel=next for paginated posts and pages.
- Removed the interface options for all rel= links, they're off by default now.
- Removed the option to hide the version number. It's very easy to detect the version number anyway so let's not clutter the interface.
- I missed a case where the next link would point to the current page, fixed it though :)
- Fixed keyword in slug detection on non-post post types.
- Optimizations in canonical functionality, adding canonicals to author archives and more.
- Added prev and next links as suggested by Google.
- Fixed issue with unescaped characters in title and description when updating edit screen.
- Posts with a canonical set to another URL are no longer included in the XML sitemap.
- Fixed a bug where canonical would be set to /page/1/ on archives.
- Fixed an error for blocking files.
- Fixed a JS error that would cause the link editor in the rich editor not to work.
- Fixed possible error when reading settings have gone haywire (ie not 'posts' or 'page' on front but something else).
- I now dare call this plugin STABLE. This doesn't mean there are no more bugs, it does mean that I think it won't break sites anymore.
- Fixed the import/export settings functionality.
- Updated the snippet preview to Google's new snippet design.
- Heavily, very heavily, reduced memory usage in XML Sitemap generation.
- XML Sitemaps:
- Bug in redirection of www to non-www
- Removed no longer needed robots_txt code.
- Proper flushing of rewrites.
- Fix for sites using index.php in permalinks.
- Moved XML settings to its own options array, cleaning up the settings. This also allows you to save XML Sitemap settings again.
- Sitemaps now contains all the last updated posts (under 1,000) of one post type in one new XML sitemap, so SE only has to crawl one sitemap per post type.
- XML Sitemap Index file is now being pushed into cache if a caching plugin is active (by loading it through a cron job).
- No longer breaks when
- Metaboxes / Edit Post:
- Proper escaping of attribute values / already filled boxes.
- Bug in bolding / keyword recognition JS code.
- Background of tab content is now white again.
- Fixed bug that could prevent noindex from showing up.
- Admin menu works properly again and has XML Sitemaps menu added.
- XML Sitemaps:
- Fixes bug in saving XML Sitemap and Dashboard settings.
- Forces flush of rewrite rules so XML sitemaps start working immediately after enabling.
- Adds a line of copy to the XML Sitemaps page to point the user at the index sitemap file.
- XML Sitemaps:
- Complete rewrite of the XML Sitemap system, now using a sitemap index file and sitemap files per taxonomy and post type. Way more scaleable and awesome.
- Updated the XSL to work with Sitemap Index file too.
- Added functionality to remove old style & potential blocking XML sitemaps.
- Removed all code that wrote files, as it's no longer needed.
- Removed all functionality for updating sitemaps after publish, as it's no longer needed (search engines will still be pinged though).
- Support for bbPress (the plugin), breadcrumbs.
- Fixed bug with blog URL appearing for non-post post_types.
- Fixed bug with post ancestors being in wrong order.
- Removed erroneous var_dump.
- Bug with title for homepage when using page as homepage.
- Moved all OpenGraph code to specific OpenGraph class.
- Added option to specify and add FB Page and App ID and FB admin ID or ID's.
- Page Analaysis:
- Fixed bug in detection of headings with an ID or other attribute.
- Several performance optimizations to class includes.
- Tiny CSS fixes so it all looks nice in WordPress 3.2.
- XML Sitemaps:
- XML Sitemaps now have their own settings page.
- Plugin version is now stored in the options for the plugin to allow easy upgrade.
- Added the option to use custom fields in title and description templates. Use
%%cf_<custom-field-name>%%and it'll be replaced with your custom field. So for instance %%cf_city%% when your custom field is named "city".
- Removed some of the tabs and empty lines the plugin was outputting.
- Added some filters:
wpseo_sitemap_urlimagesso you can add images to the sitemap, found in inc/class-sitemaps.php
- Issue in post / page editor with link dialog and other plugins using jQuery UI.
- No longer uses Google JS API for jQuery UI, but just include jQuery UI autocomplete library and uses the rest from WP core.
- No longer uses Google JS API for jQuery UI CSS, but included the needed classes in the plugins CSS files.
- Properly update sitemap for custom post types on publication.
- Fixed a notice in heading detection when no headings were found.
- Fixed a typo in Page Analysis messages.
- CSS issue caused by 0.3.3.
- Some security issues, thanks Jon Cave and Andrew Nacin for pointing them out and helping to fix!
- CSS collisions due to too generic class names.
- Issue with outbound link recognition caused in 0.3.2.
- Improved first paragraph detection.
- Word count is now correct for non western european languages too.
- Keyword detection in content and first paragraph in Cyrillic, Russian and other languages.
- Handling of UTF-8 slugs.
- Proper detection of keywords underneath the focus keyword input field by using word boundaries.
- Proper keyword bolding and counting in snippet preview for Cyrillic, Russian and other languages.
- Proper counting of length of description and title for strings with accents or non-ASCII characters.
- No longer calculating Flesch score for non-English, as it's not correct.
- Related keywords button works again.
- Notice now properly tells you to save as draft or update a post to see new Linkdex analysis. No, it's not going to be AJAX, ever, for performance reasons.
- Instant update of snippet preview now also works when editing post excerpt.
- Bugs with non-ASCII characters in the focus keyword and keyword recognition.
- Issues with themes using
catin search, most specifically the ClassiPress themes.
- The snippet preview no longer crashes when you use "on", "strong" or any other term contained in "strong" in your focus keyword.
- Made the Linkdex check for keyword in URL work in all occasions.
- Notices on XML import.
- Issue with title of blog page on paginated pages.
- Added the new bug tracker to the plugins sidebar notice under support.
- Canonical now has a filter (
wpseo_canonical) so you can remove it or change it.
- Bug in meta box JS code causing annoying issues in Firefox and Internet Explorer.
- Issue with outbound anchor text detection in Linkdex Page Analysis.
- Small bug in detection of keyword in Title when keyword contained dashes or other non alphanumeric chars.
Major new feature: Linkdex Page Analysis has been integrated into WordPress SEO.
Other new features:
- You can now noindex, follow all sub pages of archives, taxonomies and categories.
Fixes / Updates:
- Snippet will now use ellipsis when post title or meta description is too long.
- Various JS optimizations in snippet preview generation.
- Snippet length will once again correctly correct for date inclusion.
- Date in snippet will be the current date when post is an unpublished draft.
- Preventing some errors when there's no focus keyword.
- Keyword detection in the URL now works correctly.
- URLs are no longer (incorrectly) "shortened".
- Fixed possible infinite loop in editor when adding focus keyword, which was causing FF crashes.
- Fixed count of keyword in content by removing tags properly.
- Fixed issues with HTML tags appearing in snippet inappropriately.
- Switched Google Suggest autocompletion for focus keyword to use Google Suggest jQuery.
- No longer relies on
is_post_type_archiveto work, so compatible with WP 3.0 again.
- On themes that badly include $post in the head a redirect no longer occurs if the last post was redirected.
- SEO Settings menu in Admin Bar will no longer show for people that don't have the rights needed to use it.
- No longer wrongly showing image for last post in OpenGraph when on front page.
- No longer redirecting taxonomy feeds wrongly under some conditions with clean permalinks enabled.
- Fixed wrong titles for feeds.
- Custom post type archives update:
- You can now set a title, meta description and breadcrumbs title for custom post type archives on the Titles page
- Custom post type archives now have a correct canonical
- Other fixes:
- Fixed a notice for an uninitialized setting
- Slightly changed the CSS for the admin area
- Changed input fields for meta descriptions on titles page from text input to textarea
- More preparations for allowing the plugin to be fully translated
edit_postsis not the same as
edit_post, what a difference an s makes, thanks to nacin.
- preview URLs now work again with clean permalinks on, but only for those with the actual rights to view them.
- Fix for catchable fatal error in canonical function.
- First stab at fix for errors with focus keyword check and keywords filled with HTML tags.
- canonical links for paginated posts are now set correctly.
- Issue where parent taxonomy items would display in the reverse order in breadcrumbs.
- Improved error handling for non PHP 5.2+ installs and also made automatic deactivation work properly.
- Added screenshot and a FAQ with several items to this plugin's page.
This WordPress SEO plugin now officially requires PHP5. WordPress version 3.2 will also require it, so you'd better upgrade now. If you're on any version lower than PHP 5.2, this plugin will deactivate itself. You can then use SEO Data Transporter to migrate your data to another plugin, or you could do the more sensible thing and get your hosting upgraded to PHP 5.2 ASAP.
- Attempted compatibility fix with other plugins that hook into robots.txt functionality.
- Issue with not loading meta box for some custom post types.
- Issue where SEO data for custom post types would not save.
- Issue where post title in snippet preview would show %%sitename% instead of your site's name when no title template for post type was set.
- Hiding the post_format taxonomy on the right places.
- Should now work better with crappy themes that do weird things in header.php.
- Updated tabs in meta boxes to reflect Core UI, for more info see this post by Pete Mall.
- Now using plugin version number to enqueue files so browser cache isn't in the way when upgrading.
- Loading scripts in footer now when possible.
- Added nonces for security to htaccess and robots.txt file editing to prevent possible CSRF.
- Prevent JS error when WordPress SEO Meta box was hidden on edit pages.
- Fix for title in snippet preview not showing when no title template was set for the post type.
- Fix for focus keyword count, would give wrong return on slugs that were too long.
- Removed post_format from list of taxonomies you can edit title and meta desc template for as it's of no use.
- Removed post_format from list of taxonomies to exclude for XML Sitemap, it was already excluded by default.
- Option to disable WordPress SEO meta data box on (custom) taxonomies.
- The meta box on the edit posts page now features tabs, thanks to Pete Mall (even works nicely in the blue theme).
- Advanced features moved to their own tab instead of button.
- Focus keyword now shown straight below snippet preview.
Other news: The Google News module almost ready for mass-deployment. Stay tuned.
- Added WPML config file, so you can SEO in multiple languages.
- Comma in priority in sitemap which should be dot. I hate European servers.
- Fixed a notice in generating a path to the wpseo directory in the uploads dir.
- Fixed a rather annoying XML Sitemap date issue, props to Staze in wp.org forums.
- Breadcrumbs now output links to post type archives too.
- Bugs fixed:
- Fixed race condition where sitemap wouldn't load sometimes.
- ... in snippet preview are now bold as they should be.
- Desc and Title in snippet preview should now update less frequently to prevent crashing low mem browsers.
- Bugs fixed:
- Error in saving certain data when it was a checkbox.
- Fixed notice for non-existing title and for empty metakey.
- Fix for an error that could occur when the post thumbnail functionality is not active.
- Added page numbers to default titles for taxonomies and archives.
- First stab at (Facebook) OpenGraph implementation.
- Meta Description can now be returned, using
$wpseo_front->metadesc( false );for use elsewhere.
- Plugins can now register their own variables to not be cleaned out when permalink redirect is enabled.
- Deleting the dashboard widget will now really delete it.
- Some fixes for notices.
- Strip tags out of titles.
- Use blog charset for XML Sitemap instead of UTF-8.
- Import of Meta Keywords fixed.
- Small fix for possible error in AJAX routines.
- Breadcrumb now actually returns when you ask it to.
- Removed SEO title from post edit overview as you couldn't edit it there anyway.
- Added an extra notice to clean permalink to let people know they're playing with fire.
- Small improvement to error handling for upload path.
- Bugs fixed:
- Disabling sitemaps now properly does what it says on the tin: disable sitemaps.
- Properly return title for homepage in rare instances where
is_homereturns true for front page even when front page is set to static page (yes, that's a WordPress bug I had to work around).
- An empty title separator will now be changed to ' - ' so titles don't get all borked.
- Several fixes in rewrites for MultiSite instances.
- Option to force http or https on canonical URLs.
- Several other bugfixes.
- Plugin frontend URL should now be properly defined for sites with https admin.
- Manually entered category title now actually works.
- Import now works properly again for HeadSpace and AIOSEO, even for meta keywords.
- Fixed typo in wpseo-functions.php, apparently
udpate_optionis not the same as
- Fixed a notice about date snippet.
- Fixed a notice about empty canonical.
- Prevent cleaning out the WP Subscription managers interface for everyone.
- Meta keywords are now properly comma separated.
- Year archives now give proper breadcrumb.
- Nofollowed meta widget actually works now.
- %%date%% replacement in templates improved significantly.
- Shortcodes stripped out in generation of title & description templates.
- Moved all rewrites to their own class, inc/class-rewrite.php.
- Further improved error handling when uploads/wpseo dir creation fails.
- Remove category base, removes
/category/from category URL's. Find it under Permalinks. Props to WP No Category Base for having the cleanest code I could find in this area, which I reused and modified.
- Admin bar goodness: an SEO menu! Try it if you're on 3.1 already, it allows you to perform several SEO actions!
- Remove category base, removes
- Chars l
The SEO title output for the plugin doesn't work as expected
You've set up a template for your titles, but things get added to it when they're output? You can do two things: either enable "Force rewrite titles" on the SEO -> Titles settings page, or go into your header.php and change the title element to just this:
<title><?php wp_title(''); ?></title>
I'm not seeing a meta description in my `` section?
Check whether your theme's
header.php file contains a call to wp_head().
My meta descriptions aren't showing up in the search result pages
There are two possible issues with a meta description:
- You're putting out more than one of them due to multiple plugins adding a description, for instance the WordBooker plugin adds a description too but has an option to disable it, other SEO plugins running might be another cause.
- You're not seeing your meta description show up in the search result pages. Google will not alway show your meta description, the likelihood of your meta description appearing in the search results increases incredibly when your meta description contains the sought for keyword though, which is why the focus keyword functionality checks for the appearance of the focus keyword in the description.
Page X, Y, Z for plugin X doesn't work with your plugin enabled
Disable the clean permalinks feature on the SEO -> Permalinks settings page.
Does your plugin allow for Google News Sitemaps too?
It does! You'll need an add-on module for that though, which you can download from the News SEO module homepage!
Why is WordPress SEO better than All In One SEO Pack?
It's not a secret that the author of this plugin, Joost de Valk, aka Yoast, doesn't really like All In One SEO Pack. The main reason is that All in One SEO pack has a default option for auto generating meta descriptions that is actually making it harder for people to rank well in a lot of cases, giving them a false sense of security.
Once you'll start using this plugin, you won't ask that question anymore, you'll just ask yourself "why does anyone still use All In One SEO"? There's several things this plugin does better: it has a snippet preview in the write post screen that'll help you optimize your titles, meta descriptions and copy instantly while working on your posts and pages.
Also, other than All In One SEO Pack, this plugin has a completely working canonical implementation for all pages within your site, whereas the one in All In One SEO pack is broken, it was originally written by the author of this plugin, so he knows. It comes with XML Sitemaps, an XML News sitemap module, loads and loads of robots meta options and other options to improve your SEO.
I want to use your XML Sitemaps with NGINX, is that possible?
Yes, of course! Here are the rewrite rules you'll need:
rewrite ^/sitemap_index\.xml$ /index.php?sitemap=1 last; rewrite ^/([^/]+?)-sitemap([0-9]+)?\.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;