为了缩短购买流程,我的客户要求合并Cart page
和Checkout page
,而不是产品页面>购物车页面>结帐页面我有产品页面>结帐页面(附加了cart.php
的全部内容)。
问题:即使将购物车form
元素的操作属性设置为Checkout page
网址,我仍然会在点击"更新购物车&#34时重定向到Cart page
;。知道为什么以及如何解决这个问题?
答案 0 :(得分:2)
这是因为两件事。
WC_Form_Handler
处理程序类处理。位置" 包括/ class-wc-form-handler.php "。在那个函数" update_cart_action()"处理购物车更新。此函数在其末尾执行wp_safe_redirect
,该$referer
与参数wp_nonce_field( 'woocommerce-cart' );
一起传递。cart.php
而呈现这两个字段。这是在更新购物车按钮后的模板WC_Form_Handler
中。关于它的更多信息Here。这个" _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字段的创建。
因此:
希望这会有所帮助。理想情况下,这应该工作。如果确实有效,请在此处更新您的体验,以便参考其他人。