样式和脚本,在整个站点中有选择地排队

时间:2016-08-11 作者:Someone

对,我有一个插件,我正在为一个客户制作,这个插件实际上是在一个窗口电视显示器上显示他们拥有的东西,它将连接到一个未在网站上公开链接的网页。

我正在寻找只排队的样式和脚本插件,这似乎是一个主要问题,因为我知道如何有选择地检查“是网页”,然后只做某些网页,但这个网站有很多。。。我指的是很多插件,所有插件都是排队的样式&;脚本以及模板。

我不能进入每个插件一些自定义的一些公共插件,在每个队列中添加条件语句,以检查页面是否不是电视显示。

那么我怎样才能避开这个问题呢?这里似乎没有一个钩子或过滤器可以帮助我,有什么想法吗?

1 个回复
SO网友:Someone

对,我自己弄明白了,不知道这有多“黑”,但基本上这就是代码:

public function filter_scripts_styles(){
    if(is_page($this->plugin_name)){
        //Same name is used for the style as the js file so can reuse this array
        $allowed = array(\'jquery\', $this->plugin_name.\'_scrollpath\', $this->plugin_name);
        //Check Scripts First
        global $wp_scripts;
        foreach($wp_scripts->queue as $handle ) {
            if(!in_array($handle, $allowed)){
                //echo \'Dequeuing : \'. $handle;
                wp_dequeue_script($handle);
            }
        }
        //Check styles
        global $wp_styles;
        foreach($wp_styles->queue as $handle ) {
            if(!in_array($handle, $allowed)){
                //echo \'Dequeuing : \'. $handle;
                wp_dequeue_style($handle);
            }
        }
    }
}
基本上,我添加了一个操作:

$this->loader->add_action( \'wp_print_styles\', $plugin_public, \'filter_scripts_styles\' );
如果您使用的是普通WP;

add_action(\'wp_print_styles\', \'filter_scripts_styles\');
我在页面上添加了我知道需要的东西的句柄的名称,其他所有东西都将退出队列。

希望其他人会觉得这很有用。