WooCommerce:从结帐页面更新购物车重定向到购物车页面

时间:2016-03-30 23:00:00

标签: woocommerce

为了缩短购买流程,我的客户要求合并Cart pageCheckout page,而不是产品页面>购物车页面>结帐页面我有产品页面>结帐页面(附加了cart.php的全部内容)。

问题:即使将购物车form元素的操作属性设置为Checkout page网址,我仍然会在点击"更新购物车&#34时重定向到Cart page ;。知道为什么以及如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

这是因为两件事。

  1. 更新购物车操作由WC_Form_Handler处理程序类处理。位置" 包括/ class-wc-form-handler.php "。在那个函数" update_cart_action()"处理购物车更新。此函数在其末尾执行wp_safe_redirect,该$referer与参数wp_nonce_field( 'woocommerce-cart' );一起传递。
  2. 如果您签入页面的源代码,请在"更新购物车"下方。按钮是2个隐藏的字段," _wpnonce"和" _wp_http_referer"。由于函数cart.php而呈现这两个字段。这是在更新购物车按钮后的模板WC_Form_Handler中。关于它的更多信息Here
  3. 这个" _wp_http_referer"的价值已发布到$referer并作为wp_nonce_field传递。你需要删除" _wp_http_referer"正在渲染的字段。

    您可以使用以下内容替换默认的wp_nonce_field( -1, 'woocommerce-cart', false, true ); //previous suggest ----- //updated suggest below. (explanation follows) wp_nonce_field( 'woocommerce-cart', '_wpnonce', false, true ); 功能。

    'woocommerce-cart'

    _wpnonce字段是安全性所必需的,因此' false'上面一行中的参数仅禁用了referer字段的渲染。

    前两个参数的更改值的说明。功能处理购物车更新验证购物车中创建的nonce字段。之前的建议会禁用引荐来源字段,但也会将nonce字段的名称设置为'_wpnonce'。因此,nonce验证失败。通过检查nonce字段的名称来完成nonce验证,该名称在函数中被硬编码为'woocommerce-cart',而nonce字段的操作为'_wpnonce'。 更新的建议/编辑创建名称为while (inputName.length() > 12) { System.out.println(inputName.substring(0,12)); inputName = inputName.substring(12); } System.out.println(inputName); 的nonce字段,该字段满足验证并禁用了referrer字段的创建。

    因此:

    • 第一个参数设置操作名称(验证随机数)。
    • 第二个参数设置nonce字段的名称(与 安全检查)
    • 第三个参数禁用了referrer字段的创建(这是定制的动机)
    • 第四个参数导致该字段打印'而不是'返回'

    希望这会有所帮助。理想情况下,这应该工作。如果确实有效,请在此处更新您的体验,以便参考其他人。