我试图解决两个插件之间的冲突,这两个插件都加载了相同的脚本。我试图通过检查两者是否都已加载,然后如果是真的,取消其中一个的注册。但是,无论我设置的优先级值有多高,其中一个脚本总是在wp\\u enqueue\\u脚本中的最后一个脚本之后加载。
// account for conflicts between GiveWP Stripe AND WooCommerce Stripe script loading
function squarecandy_stripe_resolve() {
if ( wp_script_is(\'stripe\') && wp_script_is(\'give-stripe-js\') ) :
// if both scripts were loaded, remove one of them
wp_dequeue_script( \'give-stripe-js\' );
else :
// this is just to test what\'s going wrong...
print \'stripe queued: \' . var_export(wp_script_is(\'stripe\',\'to_do\'),true);
print \'give-stripe-js queued: \' . var_export(wp_script_is(\'give-stripe-js\'),true);
endif;
}
add_action( \'wp_enqueue_scripts\', \'squarecandy_stripe_resolve\', 999999999 );
剧本
give-stripe-js
已正确识别为已加载,并显示在
just-troubleshooting
HTML标头中的行。但是WooCommerce Stripe脚本在我的代码后加载一行,并且不会在我的脚本中注册为排队。
挖掘WooCommerce来源,我发现:
class WC_Stripe_Payment_Request {
public function __construct() {
add_action( \'wp_enqueue_scripts\', array( $this, \'scripts\' ) );
// ...etc
这是怎么回事?我在文档中找不到关于在类中传递数组的add\\u操作的任何内容。。。也许这与此有关?如何检查这两个脚本是否在所有插件都有机会排队后加载,但在任何内容打印到
<head>
?