我建立了Divi Theme的子主题与Buddypress一起使用。到目前为止一切正常, 除了注释按钮上的脚本冲突。
主题加载具有以下功能的javascript(js / custom.js, 网址为2642:2662):
$( 'a[href*=#]:not([href=http://www.srcmini.com/#])' ).click( function() {
if ( $(this).closest( '.woocommerce-tabs' ).length &
&
$(this).closest( '.tabs' ).length ) {
return false;
}if ( location.pathname.replace( /^\//, '' ) == this.pathname.replace( /^\//, '' ) &
&
location.hostname == this.hostname ) {
var target = $( this.hash );
target = target.length ? target : $( '[name=' + this.hash.slice(1) +']' );
if ( target.length ) {
et_pb_smooth_scroll( target, false, 800 );
if ( ! $( '#main-header' ).hasClass( 'et-fixed-header' ) &
&
$( 'body' ).hasClass( 'et_fixed_nav' ) &
&
$( window ).width() >
980 ) {
setTimeout(function(){
et_pb_smooth_scroll( target, false, 200);
}, 500 );
}return false;
}
}
});
此事件的目标是与Buddypress用于评论的按钮相同, 以防止单击时加载AJAX表单。
文章图片
我不想编辑父主题(custom.js)。如何防止这种冲突?是否有解决方法, 可能是来自functions.php?
更新
【解决WordPress子主题上与父主题的javascript冲突】稍后使用[wp_dequeue_script] [4]加载该脚本无效。在functions.php中使用此代码时
function de_script() {
wp_dequeue_script( 'divi-custom-script' );
}
add_action( 'wp_print_scripts', 'de_script', 100 );
则完全不会加载完整脚本(custom.js)。
#1 首先, 为解决javascript冲突, 我在主题js /文件夹下设置了一个简单的tl_custom.js, 并使用以下代码
jQuery(document).ready(function($) {
//Remove handler set by themes/Divi/js/custom.js at line 2642
$( 'a[href*=#]:not([href=http://www.srcmini.com/#])' ).off();
});
然后我在functions.php中使用以下代码添加脚本
function tl_custom_scripts() {
if ( ! is_admin() ) {
$scriptsrc = http://www.srcmini.com/get_stylesheet_directory_uri() .'/js/';
wp_register_script( 'tl_custom', $scriptsrc . 'tl_custom.js', '', '', true );
wp_enqueue_script( 'tl_custom' );
}
}
add_action( 'wp_enqueue_scripts', 'tl_custom_scripts', 20 );
主要问题是父主题在页脚中注册了custom.js, 因此我不得不将wp_register_script的last参数设置为true, 然后将add_action优先级设置为20。
#2 这个答案现在可能为时已晚, 但我目前正在从事一个继承的项目, 而我仍在继续进行。我发现他们在更新的Wordpress上使用了Divi主题, 该主题触发了以上所有错误。
我检查了源错误, 发现此选择器不正确:
$( 'a[href*=#]:not([href=http://www.srcmini.com/#])' )
我通过在不影响任何功能的情况下将其更改为此问题来解决此问题:
$( 'a[href*=\\#]:not([href=http://www.srcmini.com//#])' )
它也适用于此:
$( 'a[href*="#"]:not([href="http://www.srcmini.com/#"])' )
该问题已修复, 该代码块的功能仍在起作用。
推荐阅读
- 在WordPress中使用MySQL查询检索小部件数据
- 自适应网站只能在台式机上运行,??而不能在移动设备上运行
- 向下滚动时调整菜单大小
- #私藏项目实操分享# 什么是 SAP HANA XS JavaScript
- netty系列之:让TCP连接快一点,再快一点
- 万字详解实时计算一致性机制(对比Flink和Spark)
- MySQL 8.0 配置mysql_native_password身份验证插件的password
- nginx location配置详细解释
- Filebeat相关的操作和配置