在 WooCommerce "New Order" 通知的产品标题中添加特色图片 URL

Add featured image URL in product titles for WooCommerce "New Order" notification

我制作了一个过滤器来更新订单在 woocommerce 上的显示方式。 基本上我需要店主能够点击每个产品的名称(现在链接到特色图片)并且他能够看到 URL(因为图片文件名对他们跟踪很有用产品)

我只需要它来影响发送给店主的新订单电子邮件。

我放在 functions.php 中的代码确实会在所有电子邮件中更新,但也会在网站上确认订单 table。

问题?我怎样才能只影响新订单电子邮件?我想我在这里遗漏了一些东西。

// item name link to product

add_filter( 'woocommerce_order_item_name', 'display_product_title_as_link', 10, 2 );
function display_product_title_as_link( $item_name, $item ) {

    $_product = get_product( $item['variation_id'] ? $item['variation_id'] : $item['product_id'] );

    $image = wp_get_attachment_image_src( get_post_thumbnail_id( $_product->post->ID ), 'full' );

    return '<a href="'. $image[0] .'"  rel="nofollow">'. $item_name .'</a>
    <div style="color:blue;display:inline-block;clear:both;">'.$image[0].'</div>';

}

首先您的代码中存在一些错误,例如:

  • 函数get_product()显然已经过时,已被wc_get_product()
  • 取代
  • 因为 Woocommerce 3+ WC_Product 属性可以直接访问,而不是使用可用的方法。

这是获得您期望的正确方法(仅在 "New Order" 管理员通知中):

// Your custom function revisited
function display_product_title_as_link( $item_name, $item ) {
    $product = wc_get_product( $item['variation_id'] ? $item['variation_id'] : $item['product_id'] );
    $image = wp_get_attachment_image_src( $product->get_image_id(), 'full' );
    $product_name = $product->get_name();
    return '<a href="'. $image[0] .'" rel="nofollow">'. $product_name .'</a>
    <div style="color:blue;display:inline-block;clear:both;">'.$image[0].'</div>';
}

// The hooked function that will enable your custom product title links for "New Order" notification only
add_action( 'woocommerce_email_order_details', 'custom_email_order_details', 1, 4 );
function custom_email_order_details( $order, $sent_to_admin, $plain_text, $email ){
    // Only for "New Order" and admin email notification
    if ( 'new_order' != $email->id && ! $sent_to_admin ) return;
    // Here we enable the hooked function
    add_filter( 'woocommerce_order_item_name', 'display_product_title_as_link', 10, 3 );
}

代码进入活动子主题的 function.php 文件(活动主题或任何插件文件)。

在 WooCommerce 3+ 中测试和工作

@LoicTheAztec - 它不能工作! href 作为图像?完整图像作为缩略图?(大电子邮件)缺少产品的永久链接...修复功能 display_product_title_as_link

function display_product_title_as_link( $item_name, $item ) {
    $product = wc_get_product( $item['variation_id'] ? $item['variation_id'] : $item['product_id'] );
    $image = wp_get_attachment_image_src( $product->get_image_id(), 'thumbnail' );
    $product_name = $product->get_name();
    $product_link = get_permalink( $product->get_id() );
    return '<a href="'. $product_link .'" target="_blank"><img width="70" height="70" src="'.$image[0].'" alt="'. $product_name .'">'. $product_name .'</a> ';
}