又是周末了, 外面好大风, 于是我也在家大疯: 让Wordpress通过HTML5校验.

之前我在无效的rel值导致HTML5校验报错一文中曾言目前Wordpress原生是无法通过HTML5校验的, 原因简单又明确: 一大堆无效的rel值. 当时其实并没有太在意, 心想下个版本应该会改进的, 毕竟既然出现在HTML5校验条件中, 那就说明"禁止滥用rel值"已经不再处于草案范畴中, 而未来也基本不会再有多大转变了.
我想有必要先解释下啥是rel, 这对于大多数同学而言可能并不熟悉. rel即是"relationship"的缩写, 中文就是"关系", 它通常用于a标签或link标签, 它所代表的意义便是声明a或link中的href指向内容相对于当前文档的关系. 比如常用的rel="external"便是声明相对于当前文档此href是链接到外部的. 换个通俗的说法便是, rel的值便是该链接的类型.

更多关于rel的资讯请进入w3schools.

然而遗憾的是, Wordpress目前好似尚未注意到此问题, 甚至未来的3.2版亦是如此(我已测试过). 也许是因为这本身就无伤大雅, 又抑或是基于HTML5架构的网站过于稀缺. 但这并不妨碍我的洁癖习惯作祟... 于是, 便有了以下代码-_-

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php  
    foreach(array(
        'rsd_link',//rel="EditURI"
        'index_rel_link',//rel="index"
        'start_post_rel_link',//rel="start"
        'wlwmanifest_link'//rel="wlwmanifest"
    ) as $xx)
    remove_action('wp_head',$xx);//X掉以上
    //rel="category"或rel="category tag", 这个最巨量
    function the_category_filter($thelist){
        return preg_replace('/rel=".*?"/','rel="tag"',$thelist);
    }  
    add_filter('the_category','the_category_filter');
?>

以上全部扔入functions.php即可.
然后, 记得把head标签的profile属性去掉(W3C已声明此属性已过时), 再尝试HTML5校验, 如果还有报错, 自行修改主题相关内容吧.