在另一个插件中使用一个插件中的js脚本

时间:2017-11-12 作者:Eckstein

我有两个插件可以一起工作(一个是某种附加组件)。在“main”插件中,我在如下文件中有一个js函数:

wp-plugins/main-plugin-name/js/main-js.js
如果我的第二个插件,我还有另一个。js文件的位置如下:

wp-plugins/secondary-plugin-name/js/sec-js.js
在第二个插件中。js文件,我想使用位于第一个的函数。js文件。基本上,我希望该功能对两个插件都是全局可用的。

我已经第一次注册并排队了。js脚本使用主插件,但我似乎无法让第二个插件从第一个插件找到函数并使用它。

这是我当前的代码:

在第一个插件中:

add_action( \'wp_enqueue_scripts\', \'tps_enqueue_frontend_scripts\');
function tps_enqueue_frontend_scripts() {

$plugin_url = plugin_dir_url( __FILE__ );

wp_register_script( \'tps-space-rentals\', $plugin_url.\'/js/tps-space-rentals.js\', array(\'jquery\', \'jquery-ui-core\', \'jquery-ui-datepicker\', \'jquery-validate\', \'jquery-payment\', \'jquery-ui-dialog\', \'jquery-ui-tooltip\') );
wp_enqueue_script( \'tps-space-rentals\' );
}
在我的另一个插件中,我有:

add_action( \'wp_enqueue_scripts\', \'tps_stripe_pay_scripts_enq\', 20);
function tps_stripe_pay_scripts_enq() {
$plugin_url = plugin_dir_url( __FILE__ );

wp_register_script( \'tps-stripe-payments\', $plugin_url.\'js/tps-stripe-payments.js\', array(\'jquery\', \'tps-space-rentals\'), \'\', true );
wp_enqueue_script( \'tps-stripe-payments\' );       
}

1 个回复
SO网友:Jacob Peattie

唯一确定函数在另一个脚本中是否可用的是,它是否在另一个脚本尝试使用它之前已加载。这只是一个简单的问题<script></script> 在需要使用它的脚本标记之前,为脚本标记需要使用的函数*。

要确保所依赖的脚本在需要它的脚本之前加载,最可靠的方法是使用的dependencies参数wp_enqueue_script():

wp_enqueue_script( \'dependency\', \'/path/to/dependency.js\' );
wp_enqueue_script( \'script\', \'/path/to/script.js\', array( \'dependency\' ) );
第三个参数是脚本所依赖的脚本的句柄数组(第一个参数)。这确保了\'dependency\' 将在任何时候加载\'script\' 已排队,并在其之前。

*除非你正在做一些不寻常的事情,比如异步加载脚本,而WordPress不支持这样做wp_enqueue_script() 开箱即用。

结束

相关推荐

为什么我的WordPress要加载旧版本的JQuery?

嗨,我正在尝试将引导javascript文件排队。但这取决于JQuery和Popper。js。因此,我从CDN加载PopperJ,我提到JQuery和PopperJ都是引导程序队列的依赖项。我并没有将JQuery排入队列,因为如果您知道Wordpress将加载它,只要您将其作为依赖项提及即可。如下所示:-wp_enqueue_script( \'popper\', \'https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.mi