快速提问。我将jquery用于我当前的项目(最新版本)。我使用的一些插件也使用jquery,它们是通过wp\\u head()插入的。由于我想我的网站ber相当苗条和快速,这个多余的脚本应该被删除。
有没有办法过滤wp\\u head()中的字符串“jquery.js”并删除嵌入脚本的标记?正如您在下面的截图jquery中所看到的。不需要js。我能用钩子把它取下来吗?
快速提问。我将jquery用于我当前的项目(最新版本)。我使用的一些插件也使用jquery,它们是通过wp\\u head()插入的。由于我想我的网站ber相当苗条和快速,这个多余的脚本应该被删除。
有没有办法过滤wp\\u head()中的字符串“jquery.js”并删除嵌入脚本的标记?正如您在下面的截图jquery中所看到的。不需要js。我能用钩子把它取下来吗?
没有覆盖wp\\u head()期间产生的整个输出的过滤器。您必须使用一个相当复杂的过程,即在wp\\u头之前开始输出缓冲,然后在释放缓冲之前过滤掉您不想要的内容。
让我们假设您正在处理已正确注册脚本的插件>尝试将其添加到您的函数中。php,然后查看其中一个页面的源代码:
add_action(\'wp_head\', \'debug_scripts_queued\');
function debug_scripts_queued() {
global $wp_scripts;
echo \'<!--- SCRIPTS QUEUED\'."\\r\\n";
foreach ( $wp_scripts->queue as $script ) {
echo "\\r\\nSCRIPT: ".$script."\\r\\n";
$deps = $wp_scripts->registered[$script]->deps;
if ($deps) {
echo "DEPENDENCIES: ";
print_r($deps);
}
}
echo "\\r\\n--->";
}
这将列出所有实际注册的脚本及其依赖项。如果要取消注册的内容在该列表中,并且没有作为另一个脚本的依赖项调用,那么最简单的方法就是调用wp_deregister_script
使用此处列出的句柄。
不过,您很可能正在处理一个插件在添加脚本时没有遵循最佳实践的情况。从您的输出来看,有些插件添加了jQuery 1.5,而没有先注销jQuery并用不同的版本重新注册它。所以,任何依赖jquery的东西都会强制包含捆绑在WP中的版本。
您可以使用wp\\u deregister\\u style()和wp\\u deregister\\u script()来清除过度激进的插件脚本/样式注入。例如,我如何“优化”联系人表单7的样式/脚本注入:
// Optimize Contact Form 7
function deregister_cf7_js() {
if ( ! is_page( \'contact\' ) ) {
wp_deregister_script( \'contact-form-7\' );
}
}
add_action( \'wp_print_scripts\', \'deregister_cf7_js\', 100 );
function deregister_ct7_styles() {
if ( ! is_page( \'contact\' ) ) {
wp_deregister_style( \'contact-form-7\' );
}
}
add_action( \'wp_print_styles\', \'deregister_ct7_styles\', 100 );
如果您知道哪些插件是罪魁祸首,那么可以使用类似的方法。安装Wordpress 3.1后,jquery插件selectbox 我再也不用百分之百地工作了我在wordpress后端使用此插件替换<select></select> 我可以在自定义html代码上应用css,但在wordpress 3.1中<select> 不要100%被替换,<option> 例如,替换的代码中缺少<select> <option (some attributes...)>text</optio