我开发一个自定义主题。我有一个关于结帐页的问题。当我点击"下订单"按钮结帐页的网址从http://localhost/sitename/checkout
变化看起来像http://localhost/sitename/checkout/order-received/390/?key=wc_order_DvIkeeaIUoNFI
如果付款方式是"货到付款"或http://localhost/sitename/checkout/order-pay/391/?key=wc_order_2TbWibkoOZcxz&order=391
如果我选择互联网收购付款方式。但在该页显示结帐页的内容。我认为端点不工作。
下面是我解决这个问题的方法:
1.在WooCommerce-〉设置-〉高级中检查端点
1.创建了新的 checkout 页并删除了旧页
1.已检查Chrome DevTools控制台是否存在JS错误
1.已关闭除WooCommerce外的所有插件。问题仍然存在。
1.在另一个店面主题的测试站点上检查了它。一切正常。
1.检查了我的自定义结帐模板中的所有默认Woocommerce钩子。
1.使用https://woocommerce.com/document/woocommerce-endpoints-2-1/上提供的代码在站点目录中创建web.config
文件
1.尝试使用此代码重定向:
<?php
add_action( 'template_redirect', 'woo_custom_redirect_after_purchase' );
function woo_custom_redirect_after_purchase() {
global $wp;
if ( is_checkout() && !empty( $wp->query_vars['order-received'] ) ) {
wp_redirect( home_url('/thank-you') );
exit;
}
if ( is_checkout() && !empty( $wp->query_vars['order-pay'] ) ) {
wp_redirect( 'https://secure.wayforpay.com/pay' );
exit;
}
}
?>
至于我,这是坏的解决方案。因为如果付款方式是"货到付款"的感谢页面上是不可能获得订单数据,如果方法是"互联网收购"我需要获取和传输订单数据到收购系统,但我有一个插件,应该没有我的参与。和插件工作在另一个测试网站。
这个问题在初级WordPress开发者中很流行,但是关于解决这个问题的信息很少。我认为端点工作不正确,但是我不知道如何解决它。如果你分享你自己解决这个问题的经验或者告诉我应该寻找什么,我将非常感激。
- 更新**
此外,我比较了店面主题网站和我的网站之间的请求和响应Chrome-〉DevTools-〉Network。它们是相同的,但在我的网站上没有发生重定向。
1条答案
按热度按时间brccelvz1#
我修复了它。主要问题在于我的woocommerce不做短代码从控制台-〉页面,所以我通过page-checkout.php激活结帐模板,在那里我得到模板部分form-checkout.php(
get_template_part( 'woocommerce/checkout/form-checkout' );
)。为了修复一个错误,我用echo do_shortcode(['woocommerce_checkout']);
替换了这个字符串。非常简单的解决方案,我花了近3天的时间搜索,但更好的是我了解了WordPress是如何工作的