如何使用强制登录插件在wordpress中将收到的订单页面列入白名单



我正在使用插件强制登录:https://en-gb.wordpress.org/plugins/wp-force-login/,需要允许客人在购买后进入订单接收页面。

签出后,登录的用户将被转发到此页面:[mydomain]/checkout/order-received/[order_id]/?key=[order_key]。 我已经尝试过这个:在WooCommerce感谢页面上显示客户详细信息,即使没有注册,但在我添加后无法弄清楚该怎么做。

我目前有这个代码,它允许将某些页面列入白名单,以便未登录的用户可以绕过"强制登录"插件并为相关产品付费:

add_filter('v_forcelogin_whitelist', 'my_forcelogin_whitelist', 10, 1);
    function my_forcelogin_whitelist() {
        return array(
            home_url( '/cart/' ),
            home_url( '/checkout/' ),
            home_url( '/cart/?add-to-cart=1465' ),
        );
    }

我希望没有登录用户在结帐后被转发到如下所示的页面:

[mydomain]/checkout/order-received/5304/?key=wc_order_5cffcfbc96028

对于任何有这个问题的人来说,这就是我让它工作的方式。 由于生成的一些URL是动态的,因此我需要解决这些问题。 在函数中使用以下代码.php适用于所有与 wooCommerce 同化的 URL:

function my_forcelogin_bypass( $bypass ) {
  if ( class_exists( 'WooCommerce' ) ) {
    if ( is_woocommerce() || is_wc_endpoint_url() ) {
      $bypass = true;
    }
  }
  return $bypass;
}
add_filter( 'v_forcelogin_bypass', 'my_forcelogin_bypass' );

WooCommerce 结账/订单收到问题

对于[mydomain]/checkout/order-received/[order_id]/?key=[order_key]的问题,它没有加载正确或没有显示某些内容或500内部服务器错误?

出于临时目的,因为每当插件更新时,文件都会在 woo-commerce 插件中更新?

  1. 打开文件齐拉
  2. The Visit :/var/www/html/wp-content/plugins/woocommerce/include directory
  3. 然后在目录中打开:class-wc-order.php
  4. 使用 ctrl+F 找到这个 : get_checkout_order_received_url((
  5. 将有两行代码(较早(:

    $order_received_url = wc_get_endpoint_url( 'order-received', $this->get_id(), wc_get_checkout_url() );
    $order_received_url = add_query_arg( 'key', $this->get_order_key(), $order_received_url );
    
  6. 更改为(更新(在第二行添加注释:

    $order_received_url = wc_get_endpoint_url( 'order-received', $this->get_id(), wc_get_checkout_url() );
    //$order_received_url = add_query_arg( 'key', $this->get_order_key(), $order_received_url );
    
  7. 保存它并将其更新到服务器。
  8. 您的问题将得到解决,但这是暂时的,每当 woocommerce 插件更新时都会发生变化,因此您必须再次更新它。

谢谢!

最新更新