请注意,我不是说有条件地排队/出列脚本,我是指从前端现有的排队脚本中有条件地出列某些依赖项。请注意,这个问题不是特定于插件的。我想了解一下一般规则。
我使用Elementor(页面生成器)作为前端。但并不是我所有的页面都使用它。因此Elementor中启用的默认灯箱功能在这些页面中不起作用。这就是我添加的原因my own lightbox 在整个站点中,使用正则表达式$pattern ="/<a(.*?)href=(\'|\\")(.*?).(bmp|gif|jpeg|jpg|png)(\'|\\")(.*?)>/i";
连接到the_content
滤器事情进展顺利,但是-
当Elementor gallery或lightbox被触发时,两个脚本都会出错。正在调用两个灯箱,有时库灯箱冲突且不工作等。
解决方案1:
我知道我可以有条件地过滤
the_content
使用类似regex的:
if( ! is_singular(\'cpt\') ) {
return $content = preg_replace($pattern, $replacement, $content);
}
但我实际上想在任何地方都保留此功能。只是想把elementor灯箱移到我想让他们去的地方。因此,我正在尝试解决方案#2。
解决方案2:
Elementor所做的是类似于:
wp_enqueue_script(\'elementor-frontend\', \'link/to/frontend.js\', array(\'elementor-dialog\', \'elementor-waypoints\', \'jquery-swiper\'), \'1.9.7\', true);
现在我不想从Elementor加载lightbox功能,所以我尝试将
\'elementor-dialog\'
:
if( is_singular(\'cpt\') ) {
wp_dequeue_script( \'elementor-dialog\' );
}
但它不起作用,因为依赖项是在
\'elementor-frontend\'
. 所以我尝试注销对话框:
if( is_singular(\'cpt\') ) {
wp_dequeue_script( \'elementor-dialog\' );
wp_deregister_script( \'elementor-dialog\' );
}
这是毁灭性的,因为它让
frontend.js
.
如何更改的依赖关系frontend.js
(手柄:\'elementor-frontend\'
) 这样我就可以将依赖项更改为array(\'elementor-waypoints\', \'jquery-swiper\')
?