如何使用短代码在感谢页面上获取当前订单信息

How to get current order info on the thank you page using shortcode

我正在尝试在 thankyou.php 页面上引入一个 shortcode 来显示客户刚下的订单的详细信息。

如果我像这样在 php 中编写代码,它会工作并显示总数: <?php echo $order->get_total(); ?>

现在我正尝试通过短代码获得相同的结果,但我不知道某些参数,因此无法正常工作。

<?php
add_shortcode( 'custom-woocommerce-total' , 'custom_total' );
function custom_total(){
    $customer_id = get_current_user_id();
    $order = new WC_Order($order_id); // I suppose that's not right.
    return $order->get_total();
} ?>

任何人都可以帮助我理解我做错了什么吗?

您需要先使用 global $wp 变量获取 order id。试试这个:

add_shortcode('custom-woocommerce-total', 'custom_total');

function custom_total($attr)
{
    if (is_wc_endpoint_url('order-received')) 
    {
        global $wp;

        $order_id  = absint($wp->query_vars['order-received']);

        if ($order_id) 
        {
            $order = new WC_Order($order_id);

            if($order)
            {
              return $order->get_total();
            }

        }
    }
}

并且在 thankyou 页面模板中这样使用:

echo do_shortcode('[custom-woocommerce-total]');

不要忘记覆盖模板。