Answers:
更正后,您的主题仍然符合XHTML 1.1和CSS 2.1,但是您添加的插件注入了不符合要求的其他代码。
不幸的是,如果您使用插件,则没有简单的方法来保持合规性。您能做的最好的事情就是验证您的主题和您亲自负责的所有标记,然后希望其他开发人员花时间来验证自己的工作。
替代方案是您需要做很多工作-您仍然可以使用插件的核心功能,但不允许它们将任何标记输出到浏览器。添加您自己的自定义层,以解开插件涉及的所有内容,并构建您自己的输出缓冲区。这是您控制发送到浏览器的标记样式的唯一方法。
一些插件开始使用HTML 5 ...其他插件正在尝试使用CSS3。如果您安装了这些插件,但没有采取措施对它们的输出进行清理和验证,那么您的站点将停止正确验证。
每个插件都将生成它想要生成的代码,其中一些将不符合XHTML 1.1。纠正该错误的唯一合理方法是审核每个人,然后修改违规者或让开发人员进行修改或将您的修改用作补丁。
或者,您可以尝试编写一个过滤器进行清理,但尝试捕获所有特殊情况似乎是我个人噩梦的一个版本,并且这也会影响性能,从而产生可喜的收益。
您是否有一个想要这个的客户/老板,还是只是被认为是“ 物有所值 ”的东西?(是的,对此有些人有强烈的感觉。但是我不是其中之一。)
也就是说,XHTML在网络上失去了“ 金发孩子 ”的地位。甚至Tim Berners-Lee 在2006年也这么说:
事后回顾几年,有些事情变得更加清晰。有必要逐步发展HTML。试图使世界转向XML的尝试,包括一次围绕属性值的引号以及空标记和名称空间中的斜杠,都没有用。生成HTML的大型公众没有动弹,主要是因为浏览器没有抱怨。一些大型社区确实发生了变化,并享受着结构良好的系统的成果,但并非全部。重要的是,增量地维护HTML,以及继续过渡到结构良好的世界,并在该世界中开发更多功能。
您可能还希望阅读HTML5比XHTML 1.0更容易编写。在StackOverflow上结束。这是他们的摘要:
就语法而言,当您使用HTML5时,最终得到的是更干净,更易于阅读的标记,该标记始终调用标准模式。当您使用XHTML 1.0(用作text / html)时,您将指定一堆浏览器将自动执行的操作(以便针对糟糕的dtd进行验证)。
符合标准并不能保证您的网站可以在所有浏览器中正常工作。忽略标准合规性,而专注于使用尽可能多的浏览器进行测试。
您可以缓冲站点的整个输出,然后将其整理成兼容的HTML。最好的是,这可以完全自动化地完成:
您可以在主题初始化或相关挂钩上启用输出缓冲(例如* setup_theme *挂钩)。
这是两个代码片段。第一个显示您开始输出缓冲,稍后读取缓冲:
<?php
ob_start();
?>
…
<?php
$buffer = ob_get_clean();
$tidy = tidy_repair_string($buffer);
echo $tidy;
?>
第二个示例显示了一些实际的配置选项:
/* Tiny Configuration */
$config["clean"] = true;
$config["hide-comments"] = true;
$config["output-xhtml"] = true;
$config["indent-spaces"] = 2;
$config["tab-size"] = 2;
$config["wrap"] = 0;
$buffer = ob_get_clean();
$tidy = tidy_repair_string($buffer, $config);
echo $tidy;
我敢打赌,已经有这样做的现有wordpress插件。让我们来看看: