获取 WooCommerce 中自定义电子邮件的查看订单 URL

Ran*_*osh 5 wordpress woocommerce

我想获取“订单详细信息”页面的 URL,用户可以在其中查看其订单详细信息,因为我使用某些第 3 方 API 在产品发货后向客户发送邮件。

我试过这段代码

$order = wc_get_order(109);
$public_view_order_url = esc_url( $order->get_view_order_url() );
echo $public_view_order_url; //http://example.com/my-account/view-order/109/
Run Code Online (Sandbox Code Playgroud)

但上面代码 ^^ 生成的 URL 仅适用于登录的客户。是否可以获取公共 URL,以便用户不必登录,因为大多数客户没有任何帐户。我知道出于安全原因需要电子邮件 ID 和发票号码。

我认为的一种解决方案是创建一个自定义页面,该页面将接受order_id,order_keyemail_id在 GET 参数中查询并显示结果;我必须创建整个东西,但是有没有 WooCommerce 功能/挂钩?

我用谷歌搜索了它,也花了时间在 Woo doc 但结果是否定的,

任何帮助或建议都会对我非常有帮助。

谢谢。

ind*_*two 9

不确定我是否遗漏了什么,但听起来您想要的可以通过 URL 实现Order Received

$order->get_checkout_order_received_url()

这将为您提供类似 的内容https://example.com/checkout/order-received/12345/?key=wc_order_1ab2cd3ef4g,它是成功处理订单后显示的订单收据的直接链接。

默认情况下,此链接将显示账单和运输详细信息、订单详细信息和付款方式,并且不需要客户拥有帐户或登录。


小智 3

我找不到办法做到这一点,所以我只是在电子邮件中提出了一个条件。如果他们有帐户,请链接到订单,如果他们不鼓励他们为下一个订单创建帐户。

<p><?php
$email_order_url    =$order->get_view_order_url();

if ( $order->get_user() ) {
    _e( "Your message with <a href='" . $email_order_number . "'>Order 
       Number'</a>.", 'woocommerce' );
    } else {
    _e( "Message to encourage them to create an account on the regular 
       accounts page" , 'woocommerce' );
}
Run Code Online (Sandbox Code Playgroud)