Php 如何使用强制登录插件在wordpress中白名单订单接收页面

Php 如何使用强制登录插件在wordpress中白名单订单接收页面,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我使用的插件强制登录:需要允许客人在购买后进入订单接收页面 签出后,登录的用户将被转发到此页面:[mydomain]/checkout/order received/[order\u id]/?key=[order\u key]。我已经试过了:但是在我添加它之后,我不知道该怎么做 我目前有此代码,允许某些页面被列入白名单,以便未登录的用户可以绕过“强制登录”插件并支付相关产品的费用: add_filter('v_forcelogin_whitelist', 'my_forcelogin_whit

我使用的插件强制登录:需要允许客人在购买后进入订单接收页面

签出后,登录的用户将被转发到此页面:[mydomain]/checkout/order received/[order\u id]/?key=[order\u key]。我已经试过了:但是在我添加它之后,我不知道该怎么做

我目前有此代码,允许某些页面被列入白名单,以便未登录的用户可以绕过“强制登录”插件并支付相关产品的费用:

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\u order\u 5cffcfcfc96028对于任何有此问题的人,我就是这样让它工作的。由于生成的一些URL是动态的,因此我需要对这些URL进行处理。在function.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\u id]/?key=[order\u key]的问题,它没有正确加载,或者没有显示某些内容,或者500内部服务器错误

因为无论何时更新插件,文件都会在woo commerce插件中更新

  • 打开文件Zilla
  • 访问:/var/www/html/wp content/plugins/woocommerce/includes目录
  • 然后在目录中打开:class-wc-order.php
  • 使用ctrl+F键查找此项:获取\u签出\u订单\u收到的\u url()
  • 将有两行代码(前面):

  • 更改为(更新)在第二行添加注释:

    $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 );
    
  • 保存它并将其更新到服务器
  • 您的问题将得到解决,但这是暂时的,每当woocommerce插件被更新时,它将被更改,所以您必须再次更新它
  • 谢谢

    $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 );