回显 WooCommerce 产品缩略图?

3

我正在尝试在订单表单中显示WooCommerce产品的缩略图。

但我不确定如何实现。目前为止,我已经得到了以下代码:

<?php echo  woocommerce_get_product_thumbnail();?>

这里给出了WooCommerce缩略图占位符。 如何为订单表单中的每个项目获取正确的缩略图? 订单表单具有订单ID、创建日期、状态和价格字段,因此它确实在某个地方提取了正确的ID。

以下是从同一表单中提取每个订单信息的元键和其他字段示例,如果这些内容有任何意义。

 <a href="<?php echo $order->get_view_order_url(); ?>">
  <?php echo $order->get_order_number(); ?>
  foreach ( $customer_orders as $customer_order ) {
      $order      = wc_get_order();
      $order->populate( $customer_order );
      $item_count = $order->get_item_count();
      $customer_orders = get_posts( 
                             apply_filters( 'woocommerce_my_account_my_orders_query', 
                                 array(
                                     'numberposts' => $order_count,
                                     'meta_key'    => '_customer_user',
                                     'meta_value'  => get_current_user_id(),
                                     'post_type'   => wc_get_order_types('view-orders'),
                                     'post_status' => array_keys(wc_get_order_statuses())
                                 ) 
                             ) 
                         );

这是php的设置方式。我为图片添加了第一个表格类。
  <tr>              

        <th class="order-number"><span class="nobr"><?php _e( 'Image', 'woocommerce' ); ?></span></th>

            <th class="order-number"><span class="nobr"><?php _e( 'Order', 'woocommerce' ); ?></span></th>

            <th class="order-date"><span class="nobr"><?php _e( 'Date', 'woocommerce' ); ?></span></th>

  </tr>

我现在要添加这张图片。
<td class="order-image”>

<?php  echo woocommerce_get_product_thumbnail(); ?>

</td>



<td class="order-number">

<a href="<?php echo $order->get_view_order_url(); ?>">

<?php echo $order->get_order_number(); ?>

</a>

</td>



<td class="order-date”>

<time datetime="<?php echo date( 'Y-m-d', strtotime( $order->order_date ) ); ?>" title="<?php echo esc_attr( strtotime( $order->order_date ) ); ?>"><?php echo date_i18n( get_option( 'date_format' ), strtotime( $order->order_date ) ); ?></time>

                </td>

一个订单没有缩略图,订单中的物品有缩略图。 - helgatheviking
好的,我会编辑我的问题。 - Infotheek SE
另外,您在echo中拼错了woocomerce的拼写。 - Rebecca Dessonville
您想从WooCommerce的默认订单表单中更改什么? - helgatheviking
我有一个订单表格供用户使用,他们可以查看他们之前的订单。他们可以查看每个订单,包括订单号、购买日期、总费用等字段,但没有产品缩略图,我正在尝试设置它。@helgatheviking - Infotheek SE
1个回答

2

请注意,WooCommerce已经在“我的账户”部分包含了所有以前订单的项目/成本/缩略图,客户可以直接从他们的“我的账户”区域“重新订购”。

但是,假设您有订单ID,您可以使用以下方法获取产品缩略图。这将输出一个带有缩略图和产品名称的小列表:

$order = wc_get_order( $order_id );
$items = $order->get_items();
if( $items ) {
    echo '<ul class="ordered-items">';
    foreach( $items as $item ){
        $id = isset( $item['variation_id'] ) ? $item['variation_id'] : $item['product_id'];
        $product = wc_get_product( $id );
        echo '<li>'. $product->get_image() . $product->get_title() . '</li>';
    }
    echo '</ul>';
}

编辑:将其集成到您的代码中,我可能会执行以下操作:

function so_28179558_get_order_thumbnail( $order ){

    if( is_numeric( $order ) ){
        $order = wc_get_order( $order_id );
    }

    if( is_wp_error( $order ) ){
        return;
    }

    $order_thumb = '';

    $items = $order->get_items();
    if( $items ) {
        foreach( $items as $item ){
            $id = isset( $item['variation_id'] ) ? $item['variation_id'] : $item['product_id'];
            $product = wc_get_product( $id );
            $order_thumb = $product->get_image();
            continue;
        }
    }

    return $order_thumb;
}

然后你可以在模板中这样使用它:
<td class="order-image”>

<?php echo so_28179558_get_order_thumbnail( $order ); ?>

</td>

我已经有列表了,我只想向其中添加图片。这是我的列表截图:http://i.stack.imgur.com/e24ac.png。你可以看到,我已经添加了imagefield,目前正在回显woocommerce占位符。@helgatheviking - Infotheek SE
你的截图似乎显示了一个订单列表。正如我之前提到的,订单没有缩略图。如果你想要获取一个订单中第一个产品的缩略图(例如)并在那里使用,你可以应用我的代码,并在找到第一个缩略图后跳出foreach()循环。 - helgatheviking
嗯,我确实尝试过操作你给的代码,但是我没能让它工作。你觉得你能给我一个例子吗?谢谢!@helgatheviking - Infotheek SE
这是一个例子。如果你想让我尝试将两个代码混合在一起,你需要发布更多的代码。 - helgatheviking
好的,明白了。已经更新了帖子@helgatheviking。 - Infotheek SE

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