在 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> ';
}
我制作了一个过滤器来更新订单在 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> ';
}