与 WordPress 网站 Title 中横线的战争
每次模板升级或者换模板 Title 这块一直是个大问题。default 的模板总是不称心意。经过 Forece 一番苦斗终于解决了所有问题。
1. 首先是 |
很不喜欢竖线 | 分隔符,这个问题很好解决,基本上就直接去 header.php 里边把分隔符给换成 - 就可以了。
在 header.php 中找到代码
1 | <title><?php wp_title(' | ','true','right'); ?><?php bloginfo('name'); ?></title> |
然后替换成
1 | <title><?php wp_title(' - ','true','right'); ?><?php bloginfo('name'); ?></title> |
2. 横线 - 被转义
然后发现虽然显示了横线 - ,但是在源码中却被转义成了 – 而且还被拉长了,半角小横线 - 变成了全角大横线-。这个问题也在网上找到了解决方案,一个是直接修改 wp_title 的 wordpress 内部函数,不过代码复杂,这个方案直接被忽略了,如果有兴趣的可以看下这里,Forece 用的方法比较简单,直接放弃 wp_title 函数带的分隔符,然后直接用 echo 显示横线。
打开 header.php
1 | <title><?php wp_title(' - ','true','right'); ?><?php bloginfo('name'); ?></title> |
修改为
1 | <title><?php echo trim(wp_title('', false, 'right')); ?><?php echo ' - '; ?><?php bloginfo('name'); ?></title> |
然后你就发现,虽然大横线被替换了成了小横线,但是主页的 title 却显示成了 "- Forece" 前边多了个横线。我就日了。还得在主页上加个判断。
1 2 3 4 5 | <?php if (is_home()): ?> <title><?php bloginfo('name'); ?></title> <?php else: ?> <title><?php echo trim(wp_title('', false, 'right')); ?><?php echo ' - '; ?><?php bloginfo('name'); ?></title> <?php endif; ?> |
改到最后,发现标题后边还带小横线,显示为首页显示为 "Forece -" ,然后文章页显示为 "标题 - Forece Blog - " 为了解决这个问题,都快给我整疯了。最后终于发现了罪魁祸首 function.php ,原来主题里边给自定义了 title 显示方式。去到 function.php 里边,把关于 title 的代码注释掉。记录一下子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | /* 主页 Title 注释开始 add_theme_support( "title-tag" ); if(!function_exists('asw_wp_title')) { function asw_wp_title($title, $sep) { $id = get_the_ID(); $title_prefix = esc_attr(get_bloginfo('name')); $title_suffix = ''; $unchanged_title = $title; $title = is_front_page() ? $title_prefix.' - '.esc_attr(get_bloginfo('description')) : $title.$title_prefix.' - '.esc_attr(get_bloginfo('description')); return $title; } add_filter('wp_title', 'asw_wp_title', 10, 2); } 主页 Title 注释结束 */ |
世界清净了!!
这里稍微说明一下 wp_title 函数和 bloginfo 函数
wp_title 函数在 WordPress 中是用来显示文章、页面、分类等等等等标题的一个函数,但在首页索引,该函数将不显示任何的东西。
比如如果你把你的 title 代码写成这样:
1 | <title><?php wp_title(' | ','true','right'); ?></title> |
在主页的 Title 中并不显示任何东西,文章页只显示标题并且加个分隔符,如 "标题 -"
用法:
1 | <?php wp_title( $sep, $echo, $seplocation ); ?> |
参数:
1 2 3 | $sep:分隔符; $echo:是否显示; $seplocation:分隔符所在位置(左还是右,只接受'right',如果不是right自动判定为左) |
bloginfo 参数其实是显示博客的各种信息了。
显示博客标题
1 | <?php bloginfo('name'); ?> |
显示博客描述(副标题)
1 | <?php bloginfo('description'); ?> |
更多用法请参考 WordPress 说明文档
https://codex.wordpress.org/zh-cn:%E6%A8%A1%E6%9D%BF%E6%A0%87%E7%AD%BE/bloginfo