WordPress 標題標籤用的最多的是 wp_title 函式,所以在此之前,一定要好好了解下該函式。

wp_title 函式用法一

首頁:部落格名 – 部落格描述

首頁翻頁:部落格名 - 第 2 頁

其他頁:頁面名 – 部落格名

其他頁翻頁:頁面名 – 部落格名 - 第 2 頁

<title><?php
if(is_home() && !is_paged()){
$title=get_bloginfo("name")." – ".get_bloginfo("description");
}else{$title=wp_title(" - ",true,"right");bloginfo("name");}
if($paged<2){echo $title;}else{echo "$title – 第 $paged 頁";}
?></title>

如果希望首頁翻頁顯示:部落格名 – 部落格描述  - 第 2 頁

只需要去除 if 語句中的 && !is_paged()

另外,我摘錄了官方預設主題 twentyeleven 的標題寫法,功能跟 SJY 上面寫的語句相似。

<title><?php
/*
* Print the <title> tag based on what is being viewed.
*/
global $page, $paged;
wp_title( "-", true, "right" );
// Add the blog name.
bloginfo( "name" );
// Add the blog description for the home/front page.
$site_description = get_bloginfo( "description", "display" );
if ( $site_description && ( is_home() || is_front_page() ) )
echo " - $site_description";
// Add a page number if necessary:
if ( $paged >= 2 || $page >= 2 )
echo " - " . sprintf( __( "Page %s", "twentyten" ), max( $paged, $page ) );
?></title>

 wp_title 函式用法二

首頁:部落格名

其他頁:跟用法一相同

<title><?php
$title=wp_title(" - ",true,"right");bloginfo("name");
if($paged<2){$title;}else{echo "$title – 第 $paged 頁";}
?></title>

wp_title 函式 只定制化首頁標題

<title><?php
if(is_home() && !is_paged()){
$title="古代愛情故事_現代愛情故事_古今愛情故事網";
}else{$title=wp_title(" - ",true,"right");bloginfo("name");}
if($paged<2){echo $title;}else{echo "$title – 第 $paged 頁";}
?></title>

首頁標題為 古代愛情故事_現代愛情故事_古今愛情故事網

其他頁標題為 頁面名稱 – 部落格名

最後就是分頁大於 2 的,在後面加 第 N 頁

wp_title 函式 不同頁面用不同標籤

每個頁面最好有且僅有一個 H1 標籤,在首頁,logo 部分一般就是 H1 標籤,而內頁,文章標題用 H1 標籤,首頁就只能用其他標籤替代了。

<?php $heading_tag = ( is_home() || is_front_page() ) ? "h1" : "h4"; ?>
<<?php echo $heading_tag; ?> class="logo"><a href="<?php%20bloginfo("url"); ?>/"><?php%20bloginfo("name"); ?></a></<?php echo $heading_tag; ?>>

這行程式碼的意思是,如果是首頁那麼 logo 部分用 H1 標籤,如果是其他頁面則用 H4 標籤。

SEO 專用 wp_title 函式

<title><?php
if(is_home() && !is_paged()){
$title="棉拖鞋批發_涼拖鞋批發_拖鞋批發網";
$description="拖鞋批發網為您提供各種款式的棉拖鞋和涼拖鞋,我們的拖鞋種類繁多,高低檔拖鞋統統有貨,是經銷商,實體店,網店老闆的不二選擇!";
$keywords="棉拖鞋批發, 涼拖鞋批發, 拖鞋批發網, 拖鞋批發";
}elseif (is_category()) {
$title=single_cat_title("", false);
$title = $title." &#8211 ".get_bloginfo("name");
$keywords = single_cat_title("", false);
$description = category_description();
}elseif (is_single()) {
$title1 = get_post_meta($post->ID, "title_value", true);
$title2 = get_the_title();
$title = $title1 ? $title1 : $title2;
$title = $title." &#8211 ".get_bloginfo("name");
$description1 = get_post_meta($post->ID, "description_value", true);
$description2 = mb_strimwidth(strip_tags($post->post_content), 0, 200, "…");
$description = $description1 ? $description1 : $description2;
$keywords = get_post_meta($post->ID, "keywords_value", true);
if($keywords == "") {
$tags = wp_get_post_tags($post->ID);
foreach ($tags as $tag ) {
$keywords = $keywords . $tag->name . ", ";
}
$keywords = rtrim($keywords, ", ");
}
}else{$title=wp_title(" - ",true,"right");bloginfo("name");}
if($paged<2){echo $title;}else{echo "$title – 第 $paged 頁";}
$description=preg_replace(array("/s/","/  /"),"",$description);
$description=strip_tags($description);
?></title>

首頁我這裡直接寫死了,如果是文章頁,那麼優先取自定義欄位 title_value 中的值,該欄位無值就直接呼叫文章標題;描述中有值則取值,無值則自動擷取文章的前 200 個字元;關鍵字有值取值,無值取 tag 作為關鍵字。

其他頁面,格式一律為:頁面名 – 部落格標題

最後,在需要呼叫描述與關鍵字的頁面中插入以下程式碼

<meta name="description" content="<?php echo $description; ?>" />
<meta name="keywords" content="<?php echo $keywords; ?>" />

給自定義欄位新增面板

為了更方便的撰寫自定義標題,描述,關鍵字,給其增加一個面板,就像編輯頁面的分類目錄面板一樣。具體原理參考文章 WordPress 新增自定義欄位面板

為了節省時間,下面直接給出程式碼,把程式碼複製到 functions.php 檔案中

/*SEO 選項*/
$new_meta_boxes =
array(
"title" => array(
"name" => "title",
"std" => "這裡填自定義標題",
"title" => "TITLE:"),
"description" => array(
"name" => "description",
"std" => "這裡填預設的網頁描述",
"title" => "網頁描述:"),
"keywords" => array(
"name" => "keywords",
"std" => "這裡填預設的網頁關鍵字",
"title" => "關鍵字:")
);
function new_meta_boxes() {
global $post, $new_meta_boxes;
foreach($new_meta_boxes as $meta_box) {
$meta_box_value = get_post_meta($post->ID, $meta_box["name"]."_value", true);
if($meta_box_value == "")
$meta_box_value = $meta_box["std"];
// 自定義欄位標題
echo"<h4>".$meta_box["title"]."</h4>";
// 自定義欄位輸入框
echo "<textarea cols="60" rows="3" name="".$meta_box["name"]."_value">".$meta_box_value."</textarea><br />";
}
echo "<input type="hidden" name="newmetaboxes_noncename" id="newmetaboxes_noncename" value="".wp_create_nonce( plugin_basename(__FILE__) )."" />";
}
function create_meta_box() {
global $theme_name;
if ( function_exists("add_meta_box") ) {
add_meta_box( "new-meta-boxes", "SEO 選項", "new_meta_boxes", "post", "normal", "high" );
}
}
function save_postdata( $post_id ) {
global $new_meta_boxes;
if ( !wp_verify_nonce( $_POST["newmetaboxes_noncename"], plugin_basename(__FILE__) ))
return;
if ( !current_user_can( "edit_posts", $post_id ))
return;
foreach($new_meta_boxes as $meta_box) {
$data = $_POST[$meta_box["name"]."_value"];
if(get_post_meta($post_id, $meta_box["name"]."_value") == "")
add_post_meta($post_id, $meta_box["name"]."_value", $data, true);
elseif($data != get_post_meta($post_id, $meta_box["name"]."_value", true))
update_post_meta($post_id, $meta_box["name"]."_value", $data);
elseif($data == "")
delete_post_meta($post_id, $meta_box["name"]."_value", get_post_meta($post_id, $meta_box["name"]."_value", true));
}
}
add_action("admin_menu", "create_meta_box");
add_action("save_post", "save_postdata");

去後臺看看吧,可以拋棄一些 SEO 外掛了。