【问题标题】:wooCommerce ajax submission to same checkout page does not workwooCommerce ajax 提交到同一结帐页面不起作用
【发布时间】:2018-03-27 14:27:08
【问题描述】:

在将 wooCommerce 更新到最新版本后,结帐页面 https://my_website.com/checkout/ 现在不会提交到同一页面(即 /checkout/ 页面),而是提交到根网址 (https://my_website.com/?wc-ajax=checkout).

下订单时是否有可能的解决方法或解决方案以恢复提交订单的原始行为: (https://my_website.com/checkout/?wc-ajax=checkout)?

【问题讨论】:

    标签: php ajax wordpress woocommerce checkout


    【解决方案1】:

    事实证明,该问题是由最新 wooCommerce 版本中的最近更改女佣引起的,该更改女佣使用 home_page 处理商店中的所有 ajax 请求。

    https://github.com/woocommerce/woocommerce/commit/fbe6db5c02077a548eb1a386076d59261017145f#diff-133db5662c51f5686d87611121a05a3b

    解决方法

    通过更改 includes/class-wc-ajax.php 文件中的第 35 行来恢复以前的实现(在 get_endpoint 函数内)

    return esc_url_raw( apply_filters( 'woocommerce_ajax_get_endpoint', add_query_arg( 'wc-ajax', $request, remove_query_arg( array( 'remove_item', 'add-to-cart', 'added-to-cart' ), home_url( wp_unslash( $_SERVER['REQUEST_URI'] ) ) ) ), $request ) ); 
    

    【讨论】:

      【解决方案2】:

      您可以使用名为woocommerce_ajax_get_endpoint 的过滤器来实现此目的,而不是编辑源代码。

      这对我有用:

      function filter_woocommerce_ajax_get_endpoint( $add_query_arg, $request ) { 
          return add_query_arg( 'wc-ajax', $request, remove_query_arg( array( 'remove_item', 'add-to-cart', 'added-to-cart', 'order_again', '_wpnonce' ), home_url( 'NEW URL', 'relative' ) ) );
      }; 
      
      add_filter( 'woocommerce_ajax_get_endpoint', 'filter_woocommerce_ajax_get_endpoint', 10, 2 );
      

      【讨论】:

        猜你喜欢
        • 2023-04-04
        • 2016-10-08
        • 2015-08-14
        • 2015-01-17
        • 2015-11-07
        • 1970-01-01
        • 2016-12-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多