WordPress通过functions.php修改meta title样式
WordPress默认的标题是这样的:
- 首页:副标题 | 博客名称
- 其他:标题 | 博客名称
但是个人并不太喜欢这样的样式,想换成:
- 首页:博客名称 – 副标题
- 其他:标题 – 博客名称
也就是说,首页 title 的副标题和博客名称调换,而且所有 title 的分隔符都由竖线“|”改成减号“-”。
如果你的主题里面已经定义好了 <titile></title>标签,那就很好办,直接修改主题中的顶部文件 header.php 文件。但是我的主题没有自己做<title>,直接引用了 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 );
下一篇: 歪麦博客正式上线!