All in one seo 是一款非常出名的 SEO 外掛,其字面意思可以理解為“ 一鍵最佳化” 。在我的 WordPress 3.01 常用外掛使用記錄 這篇文章裡已經提到過 All in one seo 是一款非常具有爭議的外掛,一方面它的確具有非常強大的功能,另一方面其強大的功能導致了一些被搜尋引擎 K 掉、消耗資源、中文內容丟失等問題。有鑑於此,我已經停用了外掛,並按照一些高手的提示自己進行了一些 SEO,但遇到了一個問題,有可能是版本的差異引起的。自己解決後,發出來,希望對遇到同樣問題的朋友有所幫助。

1. 為什麼停用 All in one seo?

根據水煮魚、煎蛋等人的說法,All in one seo 外掛具有以下的一些問題

一、 noindex 導致百度不收錄內容

noindex 標籤表示拒絕 Robot 索引本頁,但可跟蹤該頁上的連結。百度爬蟲看到 noindex 就 k 掉全部只留一個首頁或者不收錄最近的內容。這就是傳說中所謂百度不收錄 WordPress 的根源,我沒有去試。

二、自動描述導致丟失描述

All in one seo 外掛具有自動生成描述的功能,但該功能對中文支援不好。因此,會導致生成空白的 description,這樣有了空白的 description 標籤後,google 就不會再去生成描述了,因此你的網頁在搜尋引擎裡的搜尋存檔資訊裡除了標題就剩下文章資訊 (日期作者什麼的),然後就是評論,而不會有正文內容。

三:All in One SEO 很耗資源

煎蛋提出這點只是根據外掛開啟與關閉狀態下開啟頁面速度的比較效果,並沒有確實依據。

2. 停用該外掛後自定義的 SEO

SEO 總是要做的,如果不用外掛的話,那就只有 DIY 了。很多博友都提出了一些簡單實用的最佳化方法,但總體來說都是一樣的三條,我不清楚哪是原創,故無法表示其版權了。

一、 title 結構

All in one seo 外掛生成的 title 結構是“ 標題 | 站點”,據博友說該結構莫要修改,否則會被搜尋引擎懲罰。在 Header.php 檔案中新增如下程式碼:

<?php if (is_home() ) {  ?> 寫意網際網路 <?php } else {?><?php wp_title(''); ?> | 寫意網際網路<?php } ?></title>

二、關鍵字和描述

關鍵字和描述對 SEO 意義重大,是必不可少的。 All in one seo 外掛的一個主要功能就是新增關鍵字和描述,停用該外掛後我們當然也要自己實現了。由於下面我要發出我自己的程式碼,這裡就不轉出他人的程式碼了。

三、解決存檔頁、作者頁、標籤和分類頁的 noindex 問題

shawn 大師的解決辦法是針對 Google 爬蟲寫 noindex,用 meta 標籤就可以有針對性對待搜尋引擎了,在 header.php 里加這麼一句:

<?php if ( !(is_home()) and !(is_single()) ) { ?><meta name= “Googlebot” content=”noindex,follow” /><?php }?>

意思就是除了首頁和文章,其它頁面最好不要 index 。另外還建議這句話前面最好加個空行。

3. 我遇到的問題及解決

我把新增關鍵字和描述的那段程式碼放入 header.php 後,發現首頁和文章都顯示正常,只是在分類頁的頭部會顯示出一部分 HTML 標籤來,如“ 搜尋引擎最佳化,seo" />” 。透過檢視原始碼,我發現是文章的描述裡竟然左右有<p></p 標籤,我不清楚為什麼描述裡會出現這個標籤,這個並不是程式的問題而可能是資料庫的問題。遇到問題當然要解決問題了,只需要把標籤過濾下就行了,我用的 strip_tags() 函式,程式碼如下所示,當然還有一點其它修改,使用時請注意全半形字元。

<?php
 if (is_home()){
    $description = “ 寫意網際網路,關於搜尋引擎、搜尋引擎最佳化、網站建設、域名空間、 php 、 WordPress 等”;
    $keywords = “ 搜尋引擎, 搜尋引擎最佳化, 網站建設, 域名空間,php,WordPress”;
 }elseif(is_single()){
    $description = $post->post_title ;
    $keywords = “”;
    $tags = wp_get_post_tags($post->ID);
    foreach ($tags as $tag ) {
       $keywords .= $tag->name.”,”;
    }
    $keywords=trim($keywords,”, “);
  }elseif(is_category()){
    $description = category_description();
  }else{}
  $description=strip_tags($description); ////過濾 HTML 、 PHP 標籤
?>
<meta name=”keywords” content=”<?=$keywords?>” />
<meta name=”description” content=”<?=$description?>” />

寫意網際網路:ucooper.com,歡迎交流