如何通过短代码在 WooCommerce 中显示最后订购的产品

How to display the last ordered product in WooCommerce via a shortcode

我正在寻找一种在另一个页面上显示最后订购的产品的方法。

我认为可以在函数中创建一个简码,它获取订单详细信息并在我添加简码的任何地方显示它们。


但我似乎无法弄清楚如何让它工作。到目前为止,我得到了可以使用的信息:

add_shortcode( 'displaylast', 'last' );
function last(){
    $customer_id = get_current_user_id();
    $order = wc_get_customer_last_order( $customer_id );
    return $order->get_order();
}

[displaylast] 目前显示我正在注意。当我将 get_order() 更改为 get_billing_first_name() 时它确实有效。

显示订单名称。但我似乎无法获得购买的商品。也许有一个 get_() 我没看到?

你很接近,但是你必须从订单对象中获取最后一个产品。

所以你得到:

function last() {
    // Not available
    $na = __( 'N/A', 'woocommerce' );
    
    // For logged in users only
    if ( ! is_user_logged_in() ) return $na;

    // The current user ID
    $user_id = get_current_user_id();

    // Get the WC_Customer instance Object for the current user
    $customer = new WC_Customer( $user_id );

    // Get the last WC_Order Object instance from current customer
    $last_order = $customer->get_last_order();
    
    // When empty
    if ( empty ( $last_order ) ) return $na;
    
    // Get order items
    $order_items = $last_order->get_items();
    
    // Latest WC_Order_Item_Product Object instance
    $last_item = end( $order_items );

    // Get product ID
    $product_id = $last_item->get_variation_id() > 0 ? $last_item->get_variation_id() : $last_item->get_product_id();
    
    // Pass product ID to products shortcode
    return do_shortcode("[product id='$product_id']");
} 
// Register shortcode
add_shortcode( 'display_last', 'last' ); 

简码用法

在现有页面中:

[display_last]

或在PHP:

echo do_shortcode('[display_last]');