WordPress默认的标题是这样的:
首页:副标题 | 博客名称
其他:标题 | 博客名称
但是个人并不太喜欢这样的样式,想换成:
首页:博客名称 - 副标题
其他:标题 - 博客名称
也就是说,首页 title 的副标题和博客名称调换,而且所有 title 的分隔符都由竖线“|”改成减号“-”。
如果你的主题里面已经定义好了 标签,那就很好办,直接修改主题中的顶部文件 header.php 文件。但是我的主题没有自己做,直接引用了wp_head() ,所以无法修改 header.php 实现。
于是乎寻思着,functions.php 文件不是可以实现自定义的功能嘛?查询了很多博主的博客后,终于把问题解决了,只需在functions.php 加入如下代码:
function new_title($title) {
if (is_front_page()) {
$title = get_bloginfo('name') . ' - ' . get_bloginfo('description');
} else {
$title .= get_bloginfo('name');
}
return $title;
}
add_filter('wp_title', 'new_title');
代码很简单,不解释了。如果需要更加复杂的,比如分类后面加上“分类”关键词,标签后面加上“标签”关键词,可以用下面的过滤函数:
function new_title( $title, $sep, $seplocation ) {
$paged = get_query_var('paged');
$blog_name = get_bloginfo('name');
$site_description = get_bloginfo('description');
// 判断是否为首页
if ($site_description && (is_front_page() || is_home())) {
$title = "$blog_name $sep $site_description";
} else {
if (is_category()) {$type = ' 分类'; }
elseif (is_tag()) { $type = ' 标签'; }
elseif(is_author()) { $type = ' 的文章'; }
elseif(is_date() || is_archive()) { $type = ' 存档'; }
else $type = '';
// 添加页码
if ($paged > 1) {
$page_num = ' 第' . $paged . '页';
}
// 清除空格和分隔符
$title = trim( str_replace( $sep, '', $title ) );
// 字符串转换成数组
$parts = array( $title . $type . $page_num, $blog_name );
// 分隔符位置
if( $seplocation == 'left' ) {
$parts = array_reverse( $parts );
}
// 清除空格、数组转换成字符串
$parts = array_filter( $parts );
$title = implode( ' ' . $sep . ' ', $parts );
}
// 返回 $title
return $title;
}
add_filter( 'wp_title', 'new_title', 10, 3 );