Wp_head()是否删除多余的脚本?

时间:2011-03-28 作者:mathiregister

快速提问。我将jquery用于我当前的项目(最新版本)。我使用的一些插件也使用jquery,它们是通过wp\\u head()插入的。由于我想我的网站ber相当苗条和快速,这个多余的脚本应该被删除。

有没有办法过滤wp\\u head()中的字符串“jquery.js”并删除嵌入脚本的标记?正如您在下面的截图jquery中所看到的。不需要js。我能用钩子把它取下来吗?

enter image description here

3 个回复
最合适的回答,由SO网友:goldenapples 整理而成

没有覆盖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中的版本。

SO网友:Chip Bennett

您可以使用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 );
如果您知道哪些插件是罪魁祸首,那么可以使用类似的方法。

SO网友:numediaweb

是的,您可以禁用出现的特定插件或脚本表单。

下面是一个示例I disabled the easy fancybox plugin from appearing

希望有帮助:)

结束

相关推荐

升级到WordPress 3.1时出现奇怪的jQuery问题

安装Wordpress 3.1后,jquery插件selectbox 我再也不用百分之百地工作了我在wordpress后端使用此插件替换<select></select> 我可以在自定义html代码上应用css,但在wordpress 3.1中<select> 不要100%被替换,<option> 例如,替换的代码中缺少<select> <option (some attributes...)>text</optio