我想使插件限制其对CSS样式表和JavaScript JS文件的加载仅适用于需要的那些页面。

我问题的一个例子是插件 联系表7 我用来在我的网站上的一个页面中创建表单(联络我“页面)。但是,它在网站上的每个页面/帖子中添加了以下行:

<link rel='stylesheet' id='contact-form-7-css'  href='http://www.r-statistics.com/wp-content/plugins/contact-form-7/styles.css?ver=2.3.1' type='text/css' media='all' /> 

<script type='text/javascript' src='http://www.r-statistics.com/wp-content/plugins/contact-form-7/scripts.js?ver=2.3.1'></script> 

这使我怀疑这个插件正在损害我的网站的加载时间,这是一个仅在网站上的一页上感兴趣的扩展程序。

因此,我的问题是如何从所有页面中删除所有页面中的这些额外行,但“与我联系”页面除外而不停用插件?

有帮助吗?

解决方案

样式和脚本总是由功能设置 wp_enqueue_script()wp_enqueue_style(), ,必须与特定的动作钩绑在一起才能发挥作用。我在触点7中窥视了一张表格7,看来它正在使用动作标签 wpcf7_enqueue_scriptswpcf7_enqueue_styles 将它们添加到 wp_print_scriptswp_print_styles 钩子。

因此,您需要做的就是从每个页面上钩上脚本和样式 您的联系页面。这 wp_head 动作在脚本和样式操作之前发射,因此您需要将类似的内容添加到主题的函数.php文件:

function remove_wpcf7_extras() {
    remove_action('wp_print_scripts', 'wpcf7_enqueue_scripts');
    remove_action('wp_print_styles', 'wpcf7_enqueue_styles');
}

if( ! is_page('contact me') ) {
    add_action('wp_head', 'remove_wpcf7_extras');
}

is_page() 功能将返回 true 当您在联系页面上时(假设名称为“联系我”)...您还可以将页面slug和页面ID用于过滤器。在所有其他页面上, if() 有条件将脚本/样式删除功能添加到 wp_head 动作,就在 wp_print_scriptswp_print_styles 动作。

这应该从页面中删除额外的代码,并且您不必停用插件或编辑任何核心文件。我上面列出的功能和代码也不会导致您的主题在将来删除Contact 7,也不会导致您的主题突破……因此,无需担心将来的升级兼容性。

许可以下: CC-BY-SA归因
scroll top