Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress 获取WooCommerce中自定义电子邮件的查看订单URL_Wordpress_Woocommerce - Fatal编程技术网

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

Wordpress 获取WooCommerce中自定义电子邮件的查看订单URL,wordpress,woocommerce,Wordpress,Woocommerce,我想获取订单详细信息页面的URL,用户可以从中查看他们的订单详细信息,因为在产品发货后,我使用一些第三方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/ 但上述代

我想获取订单详细信息页面的URL,用户可以从中查看他们的订单详细信息,因为在产品发货后,我使用一些第三方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/
但上述代码生成的URL仅适用于已登录的客户。是否可以获取公共URL,这样用户就不必登录,因为大多数客户都没有任何帐户。我知道出于安全原因,需要电子邮件id和发票号码

我认为一个解决方案是创建一个自定义页面,在GET参数中接受
order\u id
order\u key
email\u id
,查询并显示结果;我必须创建整个东西,但是否有任何WooCommerce函数/钩子用于此

我在谷歌上搜索了一下,还花时间在Woo doc上,但结果是否定的

任何帮助或建议都会对我很有帮助


谢谢。

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

<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' );
}

不确定我是否遗漏了什么,但听起来你想要的东西可以通过
收到的订单来实现
URL:

$order->get\u checkout\u order\u received\u url()

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


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

您需要的所有内容都在post meta中,这在可以访问
获取\u ID()的循环中对我有效。


https://yoursiteurl.com/checkout/order-pay//?pay_for_order=true&key=

否则,如果您可以用其他方式将订单ID替换为
get_ID()
(但是您在最初的问题中得到
109
),这也会起作用。

我认为这在WooCommerce中是不可能的,因为当订单由未登录的用户提供服务时,这由临时会话和cookie处理。因此,无法在公共模式下随后显示订单。这就是为什么你有一个“我的帐户”页面,上面有一个登录客户的所有相关订单。但是WooCommerce的一切都是可能的,为此开发了一个自定义插件。@LoicTheAztec:我不知道,所以我发布了这个问题,是的,自定义我也可以通过自定义页面创建。你可能想使用
/order received
而不是
/order pay
。如果订单已经为用户付费,则不会出现错误。烧录链接不是一个好的做法,这就是为什么woocommerce有
$order->get\u checkout\u order\u received\u url()
,这样您就可以在不考虑当前域地址的情况下动态获取订单接收页面。是否愿意详细说明为什么@svelandiag不是一个好的做法?以及“燃烧链接”的含义。以前从没听说过。
<?php $the_order_id  = get_the_ID();
      $the_order_key = get_post_meta($the_order_id, '_order_key', true); ?>

https://yoursiteurl.com/checkout/order-pay/<?php echo the_order_id; ?>/?pay_for_order=true&key=<?php echo $the_order_key; ?>