自動外鏈工具 在線排版工具 搜索引擎提交入口 wordpress主題推薦 批量打開網址工具 【老域名購買】 思享SEO導航 【網站合作】

HMJ-Blog主題修改:添加canonical標簽規范URL

文章目錄
  1. functions.php添加代碼
  2. 獲取鏈接函數然后調用

對于搜索引擎來說,URL不同則是不同的頁面,而網站經常出現一個頁面多個URL的情況,例如帶index.html的主頁、偽靜態后仍然存在的動態地址、以及分頁(例如:http://www.nhkkdh.live/page/2)。canonical標簽就是起到一個告知搜索引擎首選URL的作用。避免搜索引擎判斷為重復頁面給網站“減分”

基本上博主也是代碼小白,都是網上找的,這里貼出來一起交流

canonical標簽

functions.php添加代碼

  1. //完美的canonical
  2. remove_action(?'wp_head',?'rel_canonical'?);
  3. function?my_rel_canonical()?{
  4. global?$post;
  5. if?(is_single()?||?is_page())?{
  6. echo?"<link?rel=\"canonical\"?href=\""?.?get_permalink(?$post->ID?)?.?"\"?/>\n";
  7. }
  8. if?(is_home()?&&?is_paged())?{
  9. echo?"<link?rel=\"canonical\"?href=\"".home_url("/")."\"?/>\n";
  10. }
  11. if?(is_category()?||?is_category()?&&?is_paged())?{
  12. echo?"<link?rel=\"canonical\"?href=\"".get_category_link(get_query_var('cat'))."\"?/>\n";
  13. }
  14. if?(is_tag()?||?is_tag()?&&?is_paged())?{
  15. echo?"<link?rel=\"canonical\"?href=\"".get_term_link(get_query_var('tag'),?'post_tag')."\"?/>\n";
  16. }
  17. if?(is_search()?||?is_search()?&&?is_paged())?{
  18. echo?"<link?rel=\"canonical\"?href=\"".get_search_link(get_query_var('search'))."\"?/>\n";
  19. }
  20. if?(is_author())?{
  21. echo?"<link?rel=\"canonical\"?href=\"".get_option('home')."\"?/>\n";
  22. }
  23. if?(is_date())?{
  24. echo?"<link?rel=\"canonical\"?href=\"".get_option('home')."\"?/>\n";
  25. }
  26. }
  27. add_action('wp_head',?'my_rel_canonical');

思享目前就是用的這個代碼,添加于fufunctions.php文件中即可

值得注意的是,以上代碼主頁的首選連接是帶“/”的,如需去除,將home_url("/")中的“/”刪除即可

除此之外,思享還搜集了兩種修改方法

獲取鏈接函數然后調用

首先在functions.php文件中添加分類目錄分頁鏈接獲取函數,代碼如下:

  1. /*?wordpress中使用canonical標簽
  2. function?cx_archive_link(?$paged?=?true?)?{
  3. ????????$link?=?false;
  4. ????????if?(?is_front_page()?)?{
  5. ????????????????$link?=?home_url(?'/'?);
  6. ????????}?else?if?(?is_home()?&&?"page"?==?get_option('show_on_front')?)?{
  7. ????????????????$link?=?get_permalink(?get_option(?'page_for_posts'?)?);
  8. ????????}?else?if?(?is_tax()?||?is_tag()?||?is_category()?)?{
  9. ????????????????$term?=?get_queried_object();
  10. ????????????????$link?=?get_term_link(?$term,?$term->taxonomy?);
  11. ????????}?else?if?(?is_post_type_archive()?)?{
  12. ????????????????$link?=?get_post_type_archive_link(?get_post_type()?);
  13. ????????}?else?if?(?is_author()?)?{
  14. ????????????????$link?=?get_author_posts_url(?get_query_var('author'),?get_query_var('author_name')?);
  15. ????????}?else?if?(?is_single()?)?{
  16. ????????????????$link?=?get_permalink(?$id?);
  17. ????????}?else?if?(?is_archive()?)?{
  18. ????????????????if?(?is_date()?)?{
  19. ????????????????????????if?(?is_day()?)?{
  20. ????????????????????????????????$link?=?get_day_link(?get_query_var('year'),?get_query_var('monthnum'),?get_query_var('day')?);
  21. ????????????????????????}?else?if?(?is_month()?)?{
  22. ????????????????????????????????$link?=?get_month_link(?get_query_var('year'),?get_query_var('monthnum')?);
  23. ????????????????????????}?else?if?(?is_year()?)?{
  24. ????????????????????????????????$link?=?get_year_link(?get_query_var('year')?);
  25. ????????????????????????}
  26. ????????????????}
  27. ????????}
  28. ????????if?(?$paged?&&?$link?&&?get_query_var('paged')?>?1?)?{
  29. ????????????????global?$wp_rewrite;
  30. ????????????????if?(?!$wp_rewrite->using_permalinks()?)?{
  31. ????????????????????????$link?=?add_query_arg(?'paged',?get_query_var('paged'),?$link?);
  32. ????????????????}?else?{
  33. ????????????????????????$link?=?user_trailingslashit(?trailingslashit(?$link?)?.?trailingslashit(?$wp_rewrite->pagination_base?)?.?get_query_var('paged'),?'archive'?);
  34. ????????????????}
  35. ????????}
  36. ????????echo?'<link?rel="canonical"?href="'.$link.'"/>';
  37. }
  38. add_action('wp_head',?'cx_archive_link');

然后打開主題的頭部文件(一般情況下為header.php)在其中添加以下代碼:

  1. <?php
  2. if(is_home())?{??>
  3. <link?rel="canonical"?href="<?php?echo?v7v3_archive_link();?>"/>
  4. <?php?}??>
  5. <?php
  6. if(is_category())?{??>
  7. <link?rel="canonical"?href="<?php?echo?v7v3_archive_link();?>"/>
  8. <?php?}??>
  9. <?php
  10. if(is_single())?{??>
  11. <link?rel="canonical"?href="<?php?the_permalink();??>"/>
  12. <?php?}?>
  13. <?php
  14. if(is_tag())?{??>
  15. <link?rel="canonical"?href="<?php?echo?v7v3_archive_link();?>"/>
  16. <?php?}?>

這樣就實現了在wordpress網站上添加了canonical標簽,集中網站權重。

直接調用canonical標簽

其實,在 WordPress 2.9 發布之后,WordPress 已經默認支持這一標簽了,我們無需做任何動作,主題就支持這一標簽。
如果我們要在文章也添加canonical標簽,則在header.php中添加如下代碼:

  1. <?php if(is_single()){?>  
  2. <link rel="canonical" href="<?php echo get_permalink($post->ID);?>" />  
  3. <?php } ?>  
  4. <?php if(is_home()){?>  
  5. <link rel="canonical" href="<?php echo esc_url( home_url( '/' ) ); ?>" />  
  6. <?php } ?>  

以上是文章頁和主頁的,其他頁面只要相應添加即可。大概就是這么個意思,這種方式應該比較好,不過思享比較小白,找不到對應的函數,嗚嗚~
還要說明一下在 WordPress 的源文件 wp-includes/default-filters.php 中如下代碼:

  1. add_action( 'wp_head', 'rel_canonical' );  

rel_canonical()就是WordPress調用的函數,以此來輸出 rel=”canonical” 標簽的 HTML 代碼的。 如果你還想使用以前自己的方法,那么你可以通過下面代碼屏蔽掉它:

  1. remove_action( 'wp_head', 'rel_canonical' );  

如果使用插件來輸出 Canonical 標簽,而又沒有在 WordPress 中屏蔽默認的 filter 的話,則會輸出重復的 Canonical 標簽。

來源:本文由思享SEO博客原創撰寫,歡迎分享本文,轉載請保留出處和鏈接!
seo培訓評論廣告

搶沙發

昵稱*

郵箱*

網址

七乐彩选号技巧