WordPress SEO 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 updated every few months) 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 Joost de Valk and his team at Yoast 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.
The Yoast team does not provide support for the WordPress SEO plugin on the WordPress.org forums. One on one email support is available to people who bought the Premium WordPress SEO plugin only. You should also check out the Local SEO and Video SEO extensions to WordPress SEO, these of course come with support too.
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:
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.
- Added the option to upload a separate image for Facebook in the Social tab.
- Added published time, last modified time, tags and categories to OpenGraph output, to work with Pinterests new article pin.
- Added a filter for post length requirements in the Analysis tab.
- If there is a term description, use it in the OpenGraph description for a term archive page.
- Applied a number of settings form best practices - props Jrf.
- File inclusion best practices applied - props Jrf.
- Breadcrumbs for Custom Post Types now take the CPT->label instead of CPT->labels->menu_name as text parameter, as suggested by katart17 and Robbert V - props Jrf.
- Move all rewrite flushing to shutdown, so it doesn't break other plugins who add their rewrites late.
- Fixed the wrong naming of the L10n JS object, props Otto.
- Improved form support for UTF-8 - props Jrf.
- Corrected faulty multisite option registration - props Jrf.
- Fixed appropriate use of plugins_url() to avoid breaking hooked in filters - props Jrf.
- (Temporary) fix for metabox styling for users using the MP6 plugin - props Jrf.
- Minor fix in localization loading - props Jrf.
- Fixed Missing argument 3 for wpseo_upgrader_process_complete notice for WP 3.7+, thanks vickyindo, Wendyhihi and Theressa1 for reporting - props Jrf.
- Updated ru_RU, tr_TK and Hr
- Unhooking 'shutdown' (part of the NGG fix in 1.4.16) caused caching plugins to break, fixed while preserving NGG fix.
- These changes were pushed in later but were deemed not important enough to force an update:
- Updated newsletter subscription form to reflect new newsletter system.
- Updated readme.txt to reflect support changes.
- Moved old sections of changelog to external file.
- Updated pt_PT
- Missed a line in the commit of the option to stop stop words cleaning.
Fix for compatibility with NextGen Gallery.
- Add option to enable slug stop word cleaning, find it under SEO -> Permalinks. It's on by default.
- Remove tracking variables from the Yoast Tracking that weren't used.
- Updated de_DE, fa_IR, fi, hu_HU, it_IT, pl_PL, sv_SE and tr_TK
- Fix the white XML sitemap errors caused by non-working XSL.
- Fixed the errors in content analysis reporting an H2 was not found when it was really there.
- Fix slug stopwords removal, props amm350.
- Fix PHP Notice logged when site has capabilities created without 3rd value in args array, props mbijon.
- Fix the fact that meta description template for archive pages didn't work, props MarcQueralt.
- Prevent wrong shortcodes (that echo instead of return) from causing erroneous output.
- Fix edge cases issue for keyword in first paragraph test not working.
- Revert change in 1.4.14 that did a
do_shortcodewhile in the
headto retrieve images from posts, as too many plugins crash then, instead added
wpseo_pre_analysis_post_contentfilter there as well.
This release contains tons and tons of bugfixes, thanks in large part to Jrf, who now has commit rights to the code on Github directly. Please join me in thanking her for her efforts!
- Our GitHub repository moved to https://github.com/Yoast/wordpress-seo, old links should redirect but please check.
- Switch to stock autocomplete file and fix clash with color picker, props Heinrich Luehrsen.
- Prevent strip category base code from breaking Custom Post Type rewrites, props Steve Hulet.
- Fixed issue with canonical links on last page of paginated posts - props maxbugfiy
- Fixed bug in shortcode removal from meta description as reported by professor44 - props Jrf.
- Fixed bug preventing saving of taxonomy meta data on first try - props Jrf.
- Fixed small (potential) issue in wpseo_title_test() - props Jrf.
- Fixed bug where RSS excerpt would be double wrapped in
<p>tags as reported by mikeprince - props Jrf.
- Fixed HTML validation error: Duplicate id Twitter on Social tab - props Jrf.
- Fixed undefined index notice as reported by szepeviktor.
- Fixed error in a database query as reported by Watch Teller - props Jrf.
- Fixed small issue with how styles where enqueued/registered - props Jrf.
- Fixed bug in alt text of score dots as reported by Rocket Pixels - props Jrf.
- Applied best practices to all uses of preg_ functions fixing some bugs in the process - props Jrf.
- Fixed bug in processing of
%%ct_<custom-tax-name>%%as reported by Joy - props Jrf.
- Fixed: no more empty og: or twitter: tags. Also added additional escaping where needed - props Jrf.
- Fixed: Meta description tag discovery looked in parent theme header file even when a child theme is the current theme - props Jrf.
- Fixed: Using the 'Fix it' button would remove the meta description tag from the parent theme header file, even when a child theme is the current theme - props Jrf.
- Fixed: Using the 'Fix it' button would fail if it had already been used once (i.e. if a wpseo backup file already existed) - props Jrf.
- Fixed repeated unnecessary meta description tag checks on each visit to dashboard page - props Jrf.
- Fixed: Meta description 'Fix it' feedback message was not shown - props Jrf.
- Mini-fix for plugin_dir_url - props Jrf.
- Fixed Author Highlighting to only show authors as possible choice for Google+ Plus author as reported by Sanoma - props Jrf.
adjacent_rel_links()for Genesis users - props benjamin74 for reporting.
- Replace jQuery .live function with .on(), as .live() has been deprecated and deleted. Props Viktor Kostadinov & Taco Verdonschot.
- Fix how breadcrumbs deal with taxonomy orders. Props Gaya Kessler.
- Fixed some PHP warnings
wpseo_pre_analysis_post_contentfilter. This allows plugins to add content to the content that is analyzed by the page analysis functionality.
wpseo_genesis_force_adjacent_rel_homefilter to allow forcing of rel=next / rel=prev links on the homepage pagination for Genesis users, they're off by default.
$wpseo_metaboxa global, props Peter Chester.
- No need to show Twitter image when OpenGraph is showing, props Gary Jones.
- Make sure WPML works again, props dominykasgel.
- Added checks for the meta description tag on theme switch, on theme update and on (re-)activation of the WP SEO plugin including a visual warning if the check would warrant it - props Jrf.
- Added the ability to request re-checking a theme for the meta description tag. Useful when you've manually removed it (to get rid of the warning), inspired by tzeldin88 - props Jrf.
- OpenGraph image tags will now also be added for images added to the post via shortcodes, as suggested by msebald - props Jrf.
- Added 'wpseo_breadcrumb_single_link_with_sep' filter which allows users to filter a complete breadcrumb element including the separator - props Jrf.
- Added 'wpseo_stopwords' filter which allows users to filter the stopwords list - props Jrf.
- Added 'wpseo_terms' filter which allows users to filter the terms string - props Jrf.
- Hide advanced tab for users for which it has been disabled, as suggested by jrgmartin - props Jrf.
- Updated Facebook supported locales list for og:locale
- Updated languages tr_TK, fi, ru_RU & da_DK
- Added language hi_IN
- Updated wordpress-seo.pot file
- Fixed ampersand (&) in sitetitle in Title Templates loading as &
- Fixed error when focus keyword contains a / - props Jrf.
- Fixed issue with utf8 characters in meta description - props Jrf.
- Fixed undefined property error - props Jrf.
- Fixed undefined index error for the last page of the tour - props Jrf.
- Fixed undefined index error for images without alt - props Jrf.
- Fix output of author for Google+ when using a static front page - props petervanderdoes.
- Keyword density calculation not working when special character in focus keyword - props siriuzwhite.
- Reverse output buffer cleaning for XML sitemaps, as that collides with WP Super Cache, thanks to Rarst for finding this.
- Fix canonical and rel=prev / rel=next links for paginated home pages using index.php links.
- Fixed og:title not following title settings.
- Improved breadcrumbs and titles for 404 pages - props Jrf.
- Moved XSL stylesheet from a static file in wp-content folder to a dynamic one, allowing it to work for sites that prevented the wp-content dir from being opened directly, f.i. through Sucuri's hardening.
- Added a link in the XSL pointing back to the sitemap index on individual sitemaps.
- When remove replytocom is checked in the permalink settings, these are now also redirected out.
- Added filters to OpenGraph output functions that didn't have them yet.
- Submit button displays again on Titles & Metas page.
- SEO Title now calculates length correctly.
- Force rewrite titles should no longer reset wrongly on update.
- Updated de_DE, ru_RU, zh_CN.
- Make rel="publisher" markup appear on every page.
- Prevent empty property='article:publisher' markup from being output .
- Fixed twitter:description tag should only appears if OpenGraph is inactive.
- og:description will default to get_the_excerpt when meta description is blank (similar to how twitter:description works).
- Fixes only 25 tags (and other taxonomy) are being indexed in taxonomy sitemaps.
- Fix lastmod dates for taxonomies in XML sitemap index file.
- Changed Social Admin section to have a tab-layout.
- Moved Google+ section from Homepage tab of Titles & Metas to Social tab.
- Make twitter:domain use WordPress site name instead of domainname.
- Added more output filters in the Twitter class.
- Caching was disabled in certain cases, this update fixes that.
- Added option to disable author sitemap.
- If author pages are disabled, author sitemaps are now automatically disabled.
- Updated .pot file
- Updated ar, da_DK, de_DE, el_GR, es_ES, fa_IR, fr_FR, he_IL, id_ID, nl_NL, ro_RO, sv_SE & tr_TK
- Added hr & sl_SI
- Many localization fixes
- Fixed sitemap "loc" element to have encoded entities.
- Honor the language setting if other plugins set the language.
- sitemap.xml will now redirect to sitemap_index.xml if it doesn't exist statically.
- Added filters 'wpseo_sitemap_exclude_post_type' and 'wpseo_sitemap_exclude_taxonomy' to allow themes/plugins to exclude entries in the XML sitemap.
- Added RTL support, some CSS fixes.
- Focus word gets counted in meta description when defined by a template.
- Fixed some bugs with the focus keyword in the first paragraph test.
- Fixed display bug in SEO Title column when defined by a template ('Page # of #').
- Fixed a few strict notices that would pop up in WP 3.6.
- Prevent other plugins from overriding the WP SEO menu position.
- Enabled the advanced tab for site-admins on a multi-site install.
- Fixed post save error when page analysis is disabled.
- OpenGraph frontpage og:description and og:image tags now properly added to the frontpage.
- Added an HTML sitemap shortcode [wpseo_sitemap].
- Added an XML sitemap listing the author profile URLs.
- Added detection of Yoast's robots meta plugin and All In One SEO plugins, plugin now gives a notice to import settings and disable those plugins.
- Prevent empty image tags in Twitter Cards - props Mike Bijon.
- Add new
twitter:domaintag - props Mike Bijon.
- Add support for Facebooks new OG tags for media publishers.
- Allow authorship to be removed per post type.
- 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).