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 插件了。