wordpress 端点在WooCommerce结帐页面上不工作

lztngnrs  于 2023-01-16  发布在  WordPress
关注(0)|答案(1)|浏览(212)

我开发一个自定义主题。我有一个关于结帐页的问题。当我点击"下订单"按钮结帐页的网址从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。它们是相同的,但在我的网站上没有发生重定向。

brccelvz

brccelvz1#

我修复了它。主要问题在于我的woocommerce不做短代码从控制台-〉页面,所以我通过page-checkout.php激活结帐模板,在那里我得到模板部分form-checkout.php(get_template_part( 'woocommerce/checkout/form-checkout' );)。为了修复一个错误,我用echo do_shortcode(['woocommerce_checkout']);替换了这个字符串。非常简单的解决方案,我花了近3天的时间搜索,但更好的是我了解了WordPress是如何工作的

相关问题