WordPress recently updated it’s core library to handle Canonicalization of pages and posts to avoid duplicate content(as explained here).
Here is a small snippet of code to provide you with a more flexible and customizable way of making canonical URLs for your site.
function seo_canonical() { global $post; // We remove WP's canonical function first remove_action('wp_head', 'rel_canonical'); // Do the canonicals $canonical = get_bloginfo('url'); if (is_single() || is_page()) { $canonical = get_permalink($post->ID); } else if (is_day()) { $year = get_query_var('year'); $month = get_query_var('year'); $day = get_query_var('day'); $canonical = get_year_link($year, $month, $day); } else if (is_month()) { $year = get_query_var('year'); $month = get_query_var('monthnum'); $canonical = get_year_link($year, $month); } else if (is_year()) { $year = get_query_var('year'); $canonical = get_year_link($year); } else if (is_author()) { $author = get_query_var('author'); $canonical = get_author_posts_url($author); } else if (is_category()) { $cat = get_query_var('cat'); $canonical = get_category_link($cat); } else if (is_tag()) { $tag = get_query_var('tag_id'); $canonical = get_tag_link($tag); } echo '<link rel="canonical" href="' . $canonical . '" />'; } add_action('wp_head', 'seo_canonical');
this method will serve well to those who are really into customizing their SEO.
thanks…
nice one, but, how to canonicalize paged in index and archive?
and i have alot trouble to create canonical and different title for paged page. (when separate a page in paged format, it have the same title with different url.)
>>no seo plugin have this feature (yet)
sorry for my engish, its not my native language