前一篇文章説了為 WordPress 主題設置獨立的 Description 和 Keywords 。今天説説 WordPress 的 title 標籤。 WordPress 的標題 (Title) 與 Description 和 Keywords 可以説是一體的。原始的 Title 對 SEO 來説可能並不是太友好,剛開始接觸 WordPress 的童鞋可能都會藉助一些優化插件插件來做網站的 SEO 。但是看完這篇文章,你可能不用插件也是一樣可以做到。

WordPress 默認的 Title 就像下面一樣:

<title><?php wp_title('&laquo;', true, 'right'); ?> <?php bloginfo('name'); ?></title>

改近後的 Title:

<?php if ( is_home() ) { ?><title><?php bloginfo('name'); ?>-<?php bloginfo('description'); ?></title><?php } ?>
<?php if ( is_search() ) { ?><title> 搜索結果-Search Results-<?php bloginfo('name'); ?></title><?php } ?>
<?php if ( is_single() ) { ?><title><?php echo trim(wp_title('',0)); ?>-<?php bloginfo('name'); ?></title><?php } ?>
<?php if ( is_page() ) { ?><title><?php echo trim(wp_title('',0)); ?>-<?php bloginfo('name'); ?></title><?php } ?>
<?php if ( is_category() ) { ?><title><?php single_cat_title(); ?>-<?php bloginfo('name'); ?></title><?php } ?>
<?php if ( is_month() ) { ?><title><?php the_time('F'); ?>-<?php bloginfo('name'); ?></title><?php } ?>
<?php if (function_exists('is_tag')) { if ( is_tag() ) { ?><title><?php single_tag_title("", true); ?>-<?php bloginfo('name'); ?></title><?php }?> <?php } ?>

上面的 Title 代碼可以直接拿來用,簡單修改一下里面的-符號,換為你喜歡的。這裏需要重點介紹一下 wp_title() 函數

wp_title 函數用來顯示頁面的標題,如在文章頁面,則顯示文章標題;在分類頁面,則顯示分類名稱,但在首頁索引,該函數將不顯示任何的東西。
有點像 WordPress 中的 get_the_title 和 single_cat_title() 這兩個函數的自適應用法 (自動判斷是頁面、文章還是分類、歸檔、標籤) 。

用法

<?php wp_title( $sep, $echo, $seplocation ); ?>

參數詳解

  1. $sep:分隔符;
  2. $echo:是否顯示;
  3. $seplocation:分隔符所在位置 (左還是右,只接受』right』, 如果不是 right 自動判定為左)

輸出的結果帶有» 符號。解決的方法很簡單。

<?php wp_title(''); ?>

但是這個也是有問題的,雖然把» 符號去掉了,但標題的前面有個空格。有人提供了下面的解決辦法:

在主題文件夾的 functions.php 文件中,加入以下代碼:

// Removes the white spaces from wp_title
 function af_titledespacer($title) {
 return trim($title);
 }
 add_filter('wp_title', 'af_titledespacer');

這樣其實很麻煩,當然是不推薦的。有一個非常簡單的辦法。看下面:

<?php echo trim(wp_title('',0)); ?>

直接這樣,加多一個參數 (0),意思是不要輸出 (echo) 。這樣就 OK 了~~

但我們想追求更好的。比如想實現下面的最終輸出 (以欲思博客為例):

  • Home Page 博客描述
  • Search Results – 「WordPress」 的搜索結果 – 11 篇文章 欲思博客
  • 404 (Error) Page –欲思博客 404 錯誤頁面
  • Author Archives 作者存檔
  • Single Post – 文章名稱 分類名稱 欲思博客
  • Page – 頁面名稱 欲思博客
  • Category Page – 分類名稱 分類描述欲思博客
  • Monthly Archive 存檔 月, 年
  • Day Archive 存檔 月,日, 年
  • Tag – 標籤名稱 欲思博客

要實現上面這種對 WordPress 各種頁面的 title 定義,只需要把本文開頭的 title 代碼換成下面的即可。

<title><?php if ( is_home() ) { ?><? bloginfo('name'); ?> <?php bloginfo('description'); ?><?php } ?>
<?php if ( is_search() ) { ?> 搜索結果 for <?php /* Search Count */ $allsearch = &new WP_Query("s=$s&showposts=-1"); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e(''); echo $key; _e(' &mdash; '); echo $count . ' '; _e('篇文章); wp_reset_query(); ?><?php } ?>
<?php if ( is_404() ) { ?><? bloginfo('name'); ?> 404 Nothing Found<?php } ?>
<?php if ( is_author() ) { ?><? bloginfo('name'); ?> Author Archives<?php } ?>
<?php if ( is_single() ) { ?><?php wp_title(''); ?> <?php $category = get_the_category();echo $category[0]->cat_name;?> <? bloginfo('name'); ?><?php } ?>
<?php if ( is_page() ) { ?><? bloginfo('name'); ?> <?php $category = get_the_category();echo $category[0]->cat_name; ?><?php wp_title(''); ?><?php } ?>
<?php if ( is_category() ) { ?><?php single_cat_title(); ?> <?php $category = get_the_category(); echo $category[0]->category_description; ?> <? bloginfo('name'); ?><?php } ?>
<?php if ( is_month() ) { ?><? bloginfo('name'); ?> Archive <?php the_time('F, Y'); ?><?php } ?>
<?php if ( is_day() ) { ?><? bloginfo('name'); ?> Archive <?php the_time('F j, Y'); ?><?php } ?>
<?php if (function_exists('is_tag')) { if ( is_tag() ) { ?><?php single_tag_title("", true); } } ?> <? bloginfo('name'); ?>
</title>