我正在尝试用CDN版本替换默认的WordPress jQuery。我一直能够做到这一点,但突然之间出现了问题--我不确定这是否是因为最新的WordPress更新。我在functions.php中使用了以下代码:
function replace_default_jquery_with_fallback() {
$ver = '1.12.4';
$migrateVer = '1.4.1';
// Dequeue first then deregister
wp_dequeue_script( 'jquery' );
wp_dequeue_script( 'jquery-migrate' );
wp_deregister_script( 'jquery' );
wp_deregister_script( 'jquery-migrate' );
// Fallback
wp_add_inline_script( 'jquery', 'window.jQuery||document.write(\'<script src="' . includes_url( '/js/jquery/jquery.min.js' ) . '"><\/script>\')' );
wp_add_inline_script( 'jquery-migrate', 'window.jQuery||document.write(\'<script src="' . includes_url( '/js/jquery/jquery-migrate.min.js' ) . '"><\/script>\')' );
wp_enqueue_script( 'jquery', "//ajax.googleapis.com/ajax/libs/jquery/$ver/jquery.min.js", '', $ver, false );
wp_enqueue_script( 'jquery-migrate', "//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/$migrateVer/jquery-migrate.min.js", '', $migrateVer, false );
}
add_action( 'wp_enqueue_scripts', 'replace_default_jquery_with_fallback');这将输出到页面的头部:
<link rel='dns-prefetch' href='//ajax.googleapis.com' />
<link rel='dns-prefetch' href='//cdnjs.cloudflare.com' />但是实际的脚本没有排队。如果我将'-test‘附加到其中一个句柄中,它们就会出现,但是内联回退脚本不会。
任何帮助都是非常感谢的,谢谢
泰勒
编辑:在进行了一些搜索之后,我将代码修改为:
add_action( 'wp_enqueue_scripts', 'replace_default_jquery_with_fallback');
function replace_default_jquery_with_fallback() {
$wp_admin = is_admin();
$wp_customizer = is_customize_preview();
if ( $wp_admin || $wp_customizer ) {
// echo 'We are in the WP Admin or in the WP Customizer';
return;
} else {
// Start of jQuery replacing
$ver = '1.12.4';
$migrateVer = '1.4.1';
// Dequeue first then deregister
wp_dequeue_script( 'jquery' );
wp_dequeue_script( 'jquery-core' );
wp_dequeue_script( 'jquery-migrate' );
wp_deregister_script( 'jquery' );
wp_deregister_script( 'jquery-core' );
wp_deregister_script( 'jquery-migrate' );
wp_register_script( "jquery-core", "//ajax.googleapis.com/ajax/libs/jquery/$ver/jquery.min.js", array(), $ver, false );
wp_register_script( "jquery-migrate", "//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/$migrateVer/jquery-migrate.min.js", array(), $migrateVer, false );
wp_register_script( "jquery", false, array("jquery-core", "jquery-migrate"), null, false );
// Fallback
wp_add_inline_script( 'jquery-core', 'window.jQuery||document.write(\'<script src="' . includes_url( '/js/jquery/jquery.min.js' ) . '"><\/script>\')' );
wp_add_inline_script( 'jquery-migrate', 'window.jQuery||document.write(\'<script src="' . includes_url( '/js/jquery/jquery-migrate.min.js' ) . '"><\/script>\')' );
wp_enqueue_script( 'jquery' );
}
}仍然没有运气..。
发布于 2021-04-12 13:46:53
我在这里找到了解决方案:https://wordpress.stackexchange.com/questions/209091/gravity-forms-loading-jquery
我认为,即使页面上没有表单,重力表单也劫持了'jquery‘句柄,使我无法修改登记队列。使用上面链接的post中的解决方案解决了我的问题(将重力表单脚本移动到页脚,我在页眉中加载我的jQuery ):
add_filter('gform_init_scripts_footer', '__return_true');发布于 2021-04-08 17:28:15
您试图通过将版本号存储在变量中来动态添加脚本。你可以这样做:
function replace_default_jquery_with_fallback() {
$ver = '1.12.4';
$migrateVer = '1.4.1';
// Dequeue first then deregister
wp_dequeue_script( 'jquery' );
wp_dequeue_script( 'jquery-migrate' );
wp_deregister_script( 'jquery' );
wp_deregister_script( 'jquery-migrate' );
// Fallback
wp_add_inline_script( 'jquery', 'window.jQuery||document.write(\'<script src="' . includes_url( '/js/jquery/jquery.min.js' ) . '"><\/script>\')' );
wp_add_inline_script( 'jquery-migrate', 'window.jQuery||document.write(\'<script src="' . includes_url( '/js/jquery/jquery-migrate.min.js' ) . '"><\/script>\')' );
wp_enqueue_script( 'jquery', "https://ajax.googleapis.com/ajax/libs/jquery/".$ver."/jquery.min.js", '', $ver, false );
wp_enqueue_script( 'jquery-migrate', "https://cdnjs.cloudflare.com/ajax/libs/jquery-migrate/".$migrateVer."/jquery-migrate.min.js", '', $migrateVer, false );
}
add_action( 'wp_enqueue_scripts', 'replace_default_jquery_with_fallback');这将帮助您在wordpress站点中包含jquery,而无需在cdn链接中使用https:,它将无法工作,并且可能会在前端显示错误。
https://stackoverflow.com/questions/67008789
复制相似问题