前一篇文章说了为 WordPress 主题设置独立的 Description 和 Keywords 。今天说说 WordPress 的 title 标签。 WordPress 的标题 (Title) 与 Description 和 Keywords 可以说是一体的。原始的 Title 对 SEO 来说可能并不是太友好,刚开始接触 WordPress 的童鞋可能都会借助一些优化插件插件来做网站的 SEO 。但是看完这篇文章,你可能不用插件也是一样可以做到。
WordPress 默认的 Title 就像下面一样:
<title><?php wp_title('«', 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 ); ?>
参数详解
$sep
:分隔符;$echo
:是否显示;$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(' — '); 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>