如何从主题中移除style和js,并在使用短码的地方添加您自己的style和js?

时间:2019-09-13 作者:ali

我为wordpress制作了一个小插件,它通过一个短代码工作。是否可能使用我的短代码的页面只有我的js和样式,而没有主题样式和js。我希望该页面仅加载资源,而不加载其他内容:

这是我的代码,但我不知道如何使其有条件:

function addFiles(){
    wp_enqueue_style(\'bootstrap\' , \'http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css\');
    wp_enqueue_style(\'fontii\' , \'https://fonts.googleapis.com/css?family=Gayathri&display=swap\');
    wp_enqueue_style(\'font-awesome\' , \'https://use.fontawesome.com/releases/v5.8.2/css/all.css\');
    wp_enqueue_style(\'jqueryUI\' , \'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/themes/base/jquery-ui.css\');
    wp_enqueue_script( \'jquery\', \'https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js\' );
    wp_enqueue_script( \'bootstrap-js\', \'http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js\' );
    wp_enqueue_script( \'j-ui\', \'https://code.jquery.com/ui/1.12.1/jquery-ui.js\' );
}
add_action( \'init\', \'addFiles\' );
基本上,我想要的是一种删除特定url的默认样式和脚本的方法,或者在使用我的短代码的地方删除默认样式和脚本的方法。我想一个特定的url会更容易。

谢谢你的帮助。

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

问题是,要删除的样式和脚本会打印在头部(页脚中的一些脚本),而您的短代码很可能只会在这之后触发。

一种方法是按照您的建议,基于url执行此操作,而不是基于页面执行此操作(如果可能的话)。使用is_page, wp_deregister_style, wp_dequeue_style, wp_deregister_scriptwp_dequeue_script.

if (is_page( array( 1, 2, \'about-us\' ) )) {
    add_action( \'init\', \'addFiles\' );
    add_action( \'init\', \'removeFiles\' );
}

function addFiles(){
    wp_enqueue_style(\'bootstrap\' , \'http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css\', array(), \'3.3.5\');
    ...
}
function removeFiles() {
    wp_deregister_style( $handle );
    wp_dequeue_style( $handle );
    wp_deregister_style( $handle );
    wp_dequeue_script( $handle );
}
通过这种方式,您可以及时执行函数以取消注销出列以及脚本和样式。缺点是需要手动指定页面id, slugtitle. 幸运的是,您可以将其作为数组传递,因此可以一次添加多个页面。

对要删除的样式和脚本进行取消注册和出列“更安全”,因为在函数执行时,有些可能只是注册的,有些可能已经入列。这个$handle 是在脚本/样式注册或排队时为其设置的名称,如上例中wp\\u enqueue\\u样式的“bootstrap”。

请记住将版本添加到wp\\u enqueue\\us。通常在开发期间,我使用time() 避免缓存。

还请注意,您可以使用wordpress提供的本机jQuery ui,方法是:

wp_enqueue_script( \'jquery-ui-core\' );

以下是您可以加载的内容列表:jQuery-ui and WordPress

相关推荐

Testing Plugins for Multisite

我最近发布了一个WordPress插件,它在单个站点上非常有效。我被告知该插件在多站点安装上不能正常工作,我理解其中的一些原因。我已经更新了代码,现在需要一种方法来测试更新后的代码,然后才能转到实时客户的多站点安装。我有一个用于测试的WordPress安装程序的单站点安装,但需要在多站点安装上进行测试。根据我所能找到的唯一方法是在网络上至少有两个站点来安装整个多站点安装,以测试我的插件。设置WordPress的整个多站点安装是插件开发人员的唯一/首选方式,还是有更快的测试环境可用。