Woocommerce禁用脚本打开术语内联

时间:2018-03-10 23:44:41

标签: wordpress woocommerce

在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)吗?

4 个答案:

答案 0 :(得分:2)

cale_b是正确的。

但是,因为链接已经具有target =“ _ blank”,所以无需添加新的点击处理程序。要归档您的自定义javascript代码是在WooCommerce的脚本之后加载/运行,可以使用wp_add_inline_script

我使用此代码段,它有效:

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中,然后完成。

答案 1 :(得分:1)

WooCommerce使用jQuery,因此您可以使用jQuery的off API删除事件绑定,然后分配您自己的事件侦听器。

重要提示:完成这项工作的关键是您的脚本必须在WooCommerce的脚本之后加载/运行,否则该事件将无法转向"断&#34 ;.如果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

答案 2 :(得分:1)

我按照此说明删除了“条款和条件”的内联切换显示。直到下面的代码从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();
});

感谢您提供脚本。

答案 3 :(得分:1)

您也可以通过删除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' )
相关问题