在WooCommerce“我的账户”订单列表中显示产品缩略图

3
我想在WooCommerce“我的账户”>订单列表中的订单号旁边显示产品缩略图。
以下是订单的截图 enter image description here 我需要使用哪个钩子来显示图像?
我尝试了Add the product image to Woocommerce my account order view答案代码,但它只在单个订单视图上显示图像。
2个回答

6

更新

您可以使用以下内容将产品缩略图添加到 WooCommerce 我的帐户 > 订单列表中,位于订单编号旁边:

add_action( 'woocommerce_my_account_my_orders_column_order-number', 'my_account_orders_product_thumbnails', 20, 1 );
function my_account_orders_product_thumbnails( $order ) {
    echo '<a href="'. wc_get_endpoint_url('view-order') . $order->get_id()  . '/' . '">' . '#' . $order->get_order_number() . '</a>';

    // Loop through order items
    foreach( $order->get_items() as $item ) {
        $product   = $item->get_product(); // Get the WC_Product object (from order item)
        $thumbnail = $product->get_image(array( 36, 36)); // Get the product thumbnail (from product object)
        if( $product->get_image_id() > 0 ) {
            echo '&nbsp;' . $thumbnail;
        }
    }
}

或者您可以在订单号后面添加带有产品缩略图的新列,例如:

add_filter( 'woocommerce_my_account_my_orders_columns', 'filter_woocommerce_my_account_my_orders_columns', 10, 1 );
function filter_woocommerce_my_account_my_orders_columns( $columns ) {
    $new_column = array( 'order-number' => $columns['order-number']);
    unset($columns['order-number']);

    $new_column['order-thumbnails'] = '';

    return array_merge($new_column, $columns);
}


add_action( 'woocommerce_my_account_my_orders_column_order-thumbnails', 'filter_woocommerce_my_account_my_orders_column_order', 10, 1 );
function filter_woocommerce_my_account_my_orders_column_order( $order ) {
    // Loop through order items
    foreach( $order->get_items() as $item ) {
        $product   = $item->get_product(); // Get the WC_Product object (from order item)
        $thumbnail = $product->get_image(array( 36, 36)); // Get the product thumbnail (from product object)
        if( $product->get_image_id() > 0 ) {
            echo $thumbnail . '&nbsp;' ;
        }
    }
}

代码放在当前使用的子主题(或主题)的 functions.php 文件中。已测试并可用。


是的,它显示了图片,但订单号操作链接缺失。我需要在这里使用锚链接 echo '#' . $order->get_order_number(); - user9437856
我正在学习WooCommerce,只是想知道如果我需要显示图片,然后是订单号,那么我需要在哪里更改代码? - user9437856
是的,我更新了我的代码。谢谢你的帮助。 - user9437856
你能帮我解决这个问题吗?https://stackoverflow.com/questions/66181812/what-is-the-hook-to-change-the-size-from-thumbnail-to-the-actual-image-size-for - user9437856
@user9437856,我已经回答了你的问题(不需要使用钩子)... - LoicTheAztec
显示剩余2条评论

0

这对我来说很好用。不幸的是,该功能在Woocommerce预订插件上无法使用,在移动设备上图形太小。

add_action( 'woocommerce_my_account_my_orders_column_order-number', 'my_account_orders_product_thumbnails', 20, 1 );
function my_account_orders_product_thumbnails( $order ) {
    echo '<a href="'. wc_get_endpoint_url('view-order') . $order->get_id()  . '/' . '">' . '#' . $order->get_order_number() . '</a>'; 
    
    // Loop through order items
    foreach( $order->get_items() as $item ) {
        $product   = $item->get_product(); // Get the WC_Product object (from order item)
        $thumbnail = $product->get_image(array( 36, 36)); // Get the product thumbnail (from product object)
        if( $product->get_image_id() > 0 ) {
            echo '&nbsp;' . $thumbnail;
        }
    }
}

如果您有新的问题,请通过单击提问按钮来提出。如果它有助于提供上下文,请包含此问题的链接。- 来自审核 - m4n0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接