Woocommerce 禁用内联脚本开头条款
Posted
技术标签:
【中文标题】Woocommerce 禁用内联脚本开头条款【英文标题】:Woocommerce disable script opening terms inline 【发布时间】:2018-08-19 06:57:26 【问题描述】:在 Woocommerce 的结帐页面上有一个“我接受条款和条件”复选框。 “条款和条件”是一个链接,但 Woocommerce 会捕获链接上的点击事件,而是打开一个带有条款和条件页面的小弹出窗口(?)。
我想禁用脚本,让它只是一个普通的链接。
我确定了捕获此事件的 js 代码。不幸的是,它是 checkout.min.js
的一部分,它也控制结帐体验的其他部分,所以我想保持脚本的其余部分完好无损。
i =
init: function()
e(document.body).on("click", "a.woocommerce-terms-and-conditions-link", this.toggle_terms)
,
toggle_terms: function()
if (e(".woocommerce-terms-and-conditions").length)
return e(".woocommerce-terms-and-conditions").slideToggle(), !1
;
i.init()
额外问题,我可以将链接更改为指向任意网址(在这种情况下为 pdf)吗?
【问题讨论】:
【参考方案1】:cale_b 是对的。
但是因为链接已经有 target="_blank" ,所以不需要添加新的点击处理程序。要在 WooCommerce 的脚本之后加载/运行您的自定义 javascript 代码,您可以使用wp_add_inline_script。
我使用这个 sn-p 并且它有效:
function disable_wc_terms_toggle()
wp_add_inline_script( 'wc-checkout', "jQuery( document ).ready( function() jQuery( document.body ).off( 'click', 'a.woocommerce-terms-and-conditions-link' ); );" );
add_action( 'wp_enqueue_scripts', 'disable_wc_terms_toggle', 1000 );
将此添加到您的主题的functions.php中并完成。
【讨论】:
【参考方案2】:WooCommerce 使用 jQuery,所以你可以使用 jQuery 的off API 来移除事件绑定,然后分配你自己的事件监听器。
重要提示:使这项工作的关键是您的脚本必须在 WooCommerce 的脚本之后加载/运行,否则该事件将无法“关闭”。如果 Woo 的脚本在您的脚本之后运行,它将绑定该事件,而您的脚本不会将其删除。我在下面演示了一种方法,但您可能需要使用其他方法(例如使用 setTimeout):
// no-conflict-safe document ready shorthand
jQuery(function($)
// wait until everything completely loaded all assets
$(window).on('load', (function()
// remove the click event, and add your own to redirect
$( document.body )
.off( 'click', 'a.woocommerce-terms-and-conditions-link' )
.on( 'click', location.href='your_full_url_here');
);
);
接下来,我预计您会问如何在新选项卡中打开 PDF - 要获得答案,see this question。
【讨论】:
【参考方案3】:我按照此说明删除了“条款和条件”的内联切换显示。在从 checkout.min.js 中删除以下代码之前,它不起作用。
.slideToggle(),!1,i=init:function()e(document.body).on("click","a.woocommerce-terms-and-conditions-link",this.toggle_terms),toggle_terms:function()if(e(".woocommerce-terms-and-conditions").length)return e(".woocommerce-terms-and-conditions").slideToggle(),!1;
从 checkout.min.js 中删除这一行后,我的 checkout.js 也发生了变化,这里是:
//remove toggle
/*
var wc_terms_toggle =
init: function()
$( document.body ).on( 'click', 'a.woocommerce-terms-and-conditions-link', this.toggle_terms );
,
toggle_terms: function()
if ( $( '.woocommerce-terms-and-conditions' ).length )
$( '.woocommerce-terms-and-conditions' ).slideToggle();
return false;
;
*/
// no-conflict-safe document ready shorthand
jQuery(function($)
// wait until everything completely loaded all assets
$(window).on('load', (function()
// remove the click event, and add your own to redirect
$( document.body )
.off( 'click', 'a.woocommerce-terms-and-conditions-link' );
.on( 'click', location.href='https://yoursite.whatever');
);
);
wc_checkout_form.init();
wc_checkout_coupons.init();
wc_checkout_login_form.init();
//wc_terms_toggle.init();
);
谢谢你的剧本。
【讨论】:
【参考方案4】:您也可以通过删除 woocommerce“操作”来执行此操作。将此代码添加到您的 functions.php 文件中:
function stknat01_woocommerce_checkout_t_c_link()
remove_action( 'woocommerce_checkout_terms_and_conditions', 'wc_terms_and_conditions_page_content', 30 );
add_action( 'wp', 'stknat01_woocommerce_checkout_t_c_link' )
【讨论】:
以上是关于Woocommerce 禁用内联脚本开头条款的主要内容,如果未能解决你的问题,请参考以下文章
php 删除WooCommerce Checkout页面上的内联条款和条件
php 删除WooCommerce Checkout页面上的内联条款和条件
php 删除WooCommerce Checkout页面上的内联条款和条件
php 删除WooCommerce Checkout页面上的内联条款和条件