WordPress教程:改进wp_title()函数优化主题的Title标签

WP教程 欲思 8评论

前一篇文章说了为WordPress主题设置独立的Description 和 Keywords。今天说说WordPress的title标签。 WordPress的标题(Title)与Description 和 Keywords可以说是一体的。原始的Title对SEO来说可能并不是太友好,刚开始接触WordPress的童鞋可能都会借助一些优化插件插件来做网站的SEO。但是看完这篇文章,你可能不用插件也是一样可以做到。

WordPress教程:改进wp_title()函数优化主题的Title标签

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>

转载请注明:欲思博客 » WordPress教程:改进wp_title()函数优化主题的Title标签

如果你觉得这篇文章或者我分享的主题对你有帮助,请支持我继续更新网站和主题 !捐赠本站
喜欢 (43)or分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(8)个小伙伴在吐槽
  1. 试了一下,这种写法有问题,用上之后,页面直接打不开了……~~~~~
  2. 我的主题有自带的标题格式,好像是wp_head函数里的,但是一直找不到在哪里,郁闷
    握兰网2016-04-24 22:04 回复
  3. 没看得懂 :???:
    chen2015-08-05 11:29 回复
  4. 我的404页面显示欲思大大的广告,自定义设置不清楚在哪里弄。
    脑精网2015-04-28 00:25 回复
  5. BZ没有考虑到分页的情况。另请教:最新版的 wp 中如和只输出文章标题呢?(不带站点名称的),我发现wp_title('') 不行了。。好苦恼
    Finle2015-04-27 21:43 回复
  6. 一直用WordPress SEO by Yoast,换主题也不用折腾
    wordpress优化2015-02-04 07:55 回复
  7. 这种写法不支持自定义内容类型,有缺陷
    eyas2015-01-03 11:21 回复
  8. 用了个插件,只不过这插件文件太大了。。
    Finle2014-10-19 22:32 回复