最好保持 header.php 文件整洁,并从 functions.php 文件中插入 shim。
// add ie conditional html5 shim to header
function add_ie_html5_shim () {
echo '<!--[if lt IE 9]>';
echo '<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>';
echo '<![endif]-->';
}
add_action('wp_head', 'add_ie_html5_shim');
shim 用于使 HTML5 元素能够在低于 IE9 版本的 Internet Explorer 中通过 CSS 进行样式设置。
嗯,我不明白为什么这比把它放在 header.php 中更好。有人同样可以争辩说它应该放在 header.php 中,以便保持 functions.php 的整洁,不是吗?两种方法是否存在任何性能优势?这样做有什么好处(在工作流程、 “整洁性” 、性能或其他方面)?
我可以看到的一个好处是拥有一个 functions.php “模板”,其中包含您始终希望在任何网站中包含的内容,包括 shim(是否也像这样包含 modernizr 等?或者这会导致问题)..还有其他原因吗?
另一方面,所有 add_action('wp_head', 'whatever') 的内容实际上是如何输出的?按照其在 functions.php 中存在的顺序?插件内容的顺序是如何确定的?我想这在其他地方已经回答过了……
add_action 接受第三个参数作为优先级,如果您需要根据源代码顺序对添加的内容进行排序。
感谢你的提示,Chris..我应该在问之前先查一下的.. :)
我的其他问题怎么样?有什么性能优势(或其他方面)吗?
我确实喜欢我的 functions.php 模板的想法;我将立即开始着手开发它.. :)
我也很好奇为什么将其放在 functions.php 而不是 header 中更好。这仅仅是你的工作流程偏好吗?还是有具体的好处?
最好将其放在 functions.php 文件中,因为如前所述,您可以通过代码控制优先级。这在使用插件、进行大量自定义以及代码库冲突时变得很重要。
我通过创建一个名为“lib”的新文件夹来保持 functions.php 的整洁,该文件夹存储我的主题库,这实际上是我遇到过的所有代码片段和代码,我发现自己一遍又一遍地使用它们。
在过去的两年里,它从几个文件发展到包含文件的子文件夹,现在它是一个小型框架,添加了常用函数。
既然我们使用的是 PHP,我们不应该使用 WordPress 内置的全局变量 $is_IE 来检测 IE,如下所示吗?
想法不错,但这也会为 IE9 用户添加脚本,这是不必要的。
为什么不同时使用 $is_ie 变量和条件 CSS,以便在 WebKit/Gecko 浏览器中保持代码整洁呢?;
改进 Frankie 的代码 –
// 将 IE 条件 HTML5 shim 添加到页眉
function add_ie_html5_shim () {
global $is_IE;
if ($is_IE)
echo ‘‘;
echo ”;
echo ”;
}
add_action(‘wp_head’, ‘add_ie_html5_shim’);
我同意 Brian 的方法。这样,shiv 不会在其他插件需要它时每次都包含。我认为 register_script 方法在保持代码整洁方面是最佳方法。
使用 wp_enqueue_script 怎么样?这不是添加脚本的最佳实践方法吗?我了解如何仅为 IE 添加它,但 WordPress 是否也了解版本号,以便仅在低于 9 的版本时添加它?
我有一个特定于站点的插件,我使用它而不是 functions.php。如果我在那里使用此代码,它会产生相同的效果吗?或者,优先级问题仅与 functions.php 相关?:O
我认为它来自 functions.php
在任何类型的 functions 文件中执行此操作的一个原因是,插件无法更改主题的
header.php
文件,它们只能挂钩到它。此外,@evan,
wp_enqueue_script()
是最佳实践,但无法在进行 IE 版本测试时使用它,因此我们进退两难。这是否无法解决问题?
@Matthew
这是我刚刚添加到当前项目中的代码
由于我们只针对 IE8 及以下版本,因此我将正则表达式更改为仅 1-8,还将其大写并添加了不区分大小写的标志(冗余,但你永远不知道)。
感谢大家对此提供的帮助。
我认为这在激活其中一个缓存插件(例如 W3 Total Cache)时将不起作用。
它将在 FireHost & Pagely 上运行许多网站,并使用 W3TC 我对其处理此类问题的能力感到惊喜。
`> PS
我应该告诉你,我确实为“片段缓存”付费了,因为我使用了 Genesis,它速度更快,但你也可以直接访问 W3TC,这就是它的价值所在。购买前询问。
function add_ie_html5_shim () {
echo ‘<!–[if lt IE 9]>’;
echo ‘<script src=”http://html5shim.googlecode.com/svn/trunk/html5.js”></script>’;
echo ‘<![endif]–>’;
}
if ($GLOBALS[‘is_IE’]) {
add_action(‘wp_head’, ‘add_ie_html5_shim’);
}
帮帮我!
SHIM 和 SHIV 之间有什么区别?
没有区别。只是词语混淆了。
您好,如何在 WordPress 4.x 中组合条件注释
到
<!–[if lt IE 9]>
<![endif]–