【问题标题】:Show product thumbnail on woocommerce New Order email在 woocommerce 新订单电子邮件上显示产品缩略图
【发布时间】:2013-08-11 19:10:37
【问题描述】:

我有一个 WordPress / WooCommerce 网站正在运行,我想在收到新订单时编辑管理员收到的电子邮件,以显示产品的缩略图。 我将模板复制到我的主题目录-/themes/mytheme/woocommerce/emails/admin-new-order.php:

    <?php echo $order->email_order_items_table( true, false, true, true, array( 150, 150 )     ); ?>

这是来自woocommerce/classes/class-wc-order.php文件的代码:

    /**
 * Output items for display in html emails.
 *
 * @access public
 * @param bool $show_download_links (default: false)
 * @param bool $show_sku (default: false)
 * @param bool $show_purchase_note (default: false)
 * @param bool $show_image (default: false)
 * @param array $image_size (default: array( 32, 32 )
 * @param bool plain text
 * @return string
 */
public function email_order_items_table( $show_download_links = false, $show_sku = false, $show_purchase_note = false, $show_image = false, $image_size = array( 32, 32), $plain_text = false ) {

    ob_start();

    $template = $plain_text ? 'emails/plain/email-order-items.php' : 'emails/email-order-items.php';

    woocommerce_get_template( $template, array(
        'order'                 => $this,
        'items'                 => $this->get_items(),
        'show_download_links'   => $show_download_links,
        'show_sku'              => $show_sku,
        'show_purchase_note'    => $show_purchase_note,
        'show_image'            => $show_image,
        'image_size'            => $image_size
    ) );

    $return = apply_filters( 'woocommerce_email_order_items_table', ob_get_clean() );

    return $return;
}

这是来自/plugins/woocommerce/templates/emails的代码

<?php
 /**
  * Email Order Items
  *
  * @author         WooThemes
  * @package    WooCommerce/Templates/Emails
  * @version     2.0.3
  */

      if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

      global $woocommerce;

      foreach ($items as $item) :

// Get/prep product data
$_product = $order->get_product_from_item( $item );
$item_meta = new WC_Order_Item_Meta( $item['item_meta'] );
$image = ($show_image) ? '<img src="/wp/'. current(wp_get_attachment_image_src( get_post_thumbnail_id( $_product->id ), 'thumbnail')) .'" alt="img" height="'.$image_size[1].'" width="'.$image_size[0].'" style="vertical-align:middle; margin-right: 10px;" />' : '';

?>
<tr>
    <td style="text-align:left; vertical-align:middle; border: 1px solid #eee; word-wrap:break-word;"><?php

        // Show title/image etc
        echo    apply_filters( 'woocommerce_order_product_image', $image, $_product, $show_image);

        // Product name
        echo    apply_filters( 'woocommerce_order_product_title', $item['name'], $_product );

        // SKU
        echo    ($show_sku && $_product->get_sku()) ? ' (#' . $_product->get_sku() . ')' : '';

        // File URLs
        if ( $show_download_links && $_product->exists() && $_product->is_downloadable() ) {

            $download_file_urls = $order->get_downloadable_file_urls( $item['product_id'], $item['variation_id'], $item );

            $i = 0;

            foreach ( $download_file_urls as $file_url => $download_file_url ) {
                echo '<br/><small>';

                $filename = woocommerce_get_filename_from_url( $file_url );

                if ( count( $download_file_urls ) > 1 ) {
                    echo sprintf( __('Download %d:', 'woocommerce' ), $i + 1 );
                } elseif ( $i == 0 )
                    echo __( 'Download:', 'woocommerce' );

                echo ' <a href="' . $download_file_url . '" target="_blank">' . $filename . '</a></small>';

                $i++;
            }
        }

        // Variation
        echo    ($item_meta->meta) ? '<br/><small>' . nl2br( $item_meta->display( true, true ) ) . '</small>' : '';

    ?></td>
    <td style="text-align:left; vertical-align:middle; border: 1px solid #eee;"><?php echo $item['qty'] ;?></td>
    <td style="text-align:left; vertical-align:middle; border: 1px solid #eee;"><?php echo $order->get_formatted_line_subtotal( $item ); ?></td>
</tr>

<?php if ($show_purchase_note && $purchase_note = get_post_meta( $_product->id, '_purchase_note', true)) : ?>
    <tr>
        <td colspan="3" style="text-align:left; vertical-align:middle; border: 1px solid #eee;"><?php echo apply_filters('the_content', $purchase_note); ?></td>
    </tr>
<?php endif; ?>

这就是结果,一封没有缩略图的电子邮件。我已经多次更改了alt 属性和图像大小,并且效果很好,但是,img src 仍然丢失

<td style="text-align:left;vertical-align:middle;border:1px solid #eee;word-wrap:break-   word">
<img alt="img" height="150" width="150" style="vertical-align:middle;margin-right:10px">prueba test<br><small></small>
</td>

我做错了什么? 感谢您的帮助!

【问题讨论】:

    标签: wordpress woocommerce email-templates


    【解决方案1】:

    我知道,老问题,但我只是想指出(以防有人想知道)这个问题很可能是由于传递给文件 woocommerce/templates/emails/email-order-items.php 内的 img 标记的错误 URL 格式:

    $image = ($show_image) ? '<img src="/wp/'. current(wp_get_attachment_image_src( get_post_thumbnail_id( $_product->id ), 'thumbnail')) .'" alt="img" height="'.$image_size[1].'" width="'.$image_size[0].'" style="vertical-align:middle; margin-right: 10px;" />' : '';
    

    src 属性内开头错误地添加了/wp/,这会导致如下 URL:

    '/wp/http://www.website.com/path/to/the/image.jpg'
    

    【讨论】:

      【解决方案2】:

      WC 已经在代码中有这个,你只需要从模板文件中启用它。将 WooCommerce 目录放在您的主题中,然后转到:

      /wp-content/themes/YOUR THEME NAME/woocommerce/emails
      

      从文件email-order-details.php 中找到此代码:

      <?php echo $order->email_order_items_table( array(
              'show_sku'      => $sent_to_admin,
              'show_image'    => false,
              'image_size'    => array( 50, 50 ),
              'plain_text'    => $plain_text,
              'sent_to_admin' => $sent_to_admin
          ) ); ?>
      

      并将其替换为:

      <?php echo $order->email_order_items_table( array(
              'show_sku'      => $sent_to_admin,
              'show_image'    => true,
              'image_size'    => array( 50, 50 ),
              'plain_text'    => $plain_text,
              'sent_to_admin' => $sent_to_admin
          ) ); ?>
      

      全部完成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-13
        • 1970-01-01
        • 1970-01-01
        • 2021-05-14
        • 2021-02-10
        • 2012-09-01
        • 1970-01-01
        相关资源
        最近更新 更多