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." – ".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." – ".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 外掛了。