如何在WooCommerce中添加相关产品或交叉销售订购电子邮件

时间:2017-06-23 14:30:52

标签: wordpress woocommerce hook-woocommerce

我似乎找不到在WooCommerce中添加相关产品或交叉销售订购电子邮件的方法,这会伤害我的大脑。我确信它一定是可能的,但似乎无法让它发挥作用。我尝试在订单表之后添加do_shortcode,但这没有用。

2 个答案:

答案 0 :(得分:0)

您必须在电子邮件模板中使用php执行此操作。你可以编辑email-footer.php并添加如下内容:

<?php

    echo do_shortcode('[related_products per_page="4"]');

?>

您可能希望将其添加到表格中,而不是在表格下方。只需添加一个额外的并将其放入其中。

答案 1 :(得分:0)

您可以将其放在子主题的functions.php文件中:

// product suggestion in order mail
function order_mail_product_suggestion($atts) {
    $atts=shortcode_atts(
        array(
            'id' => '',
        ), $atts, 'order_mail_product_suggestion');
    $orderId = esc_attr($atts['id']);
    $order = wc_get_order( (int)$orderId );
    $items = $order->get_items();
    $cat = array();
    $pid = array();
    foreach ( $items as $item ) {
        $pid[] = $item->get_product_id();
        $terms = wp_get_post_terms($item->get_product_id(),'product_cat',array('fields'=>'ids'));
        foreach ( $terms as $term ) {
            $cat[] = $term;
        }
    }
    $uniuqcat = array_unique($cat);
    $uniuqpid = array_unique($pid);
    $html = '';
    $args = array(
        'post_type'             => 'product',
        'stock'                 => 1,
        'post_status'           => 'publish',
        'ignore_sticky_posts'   => 1,
        'posts_per_page'        => '20',
        'tax_query'             => array(
            array(
                'taxonomy'      => 'product_cat',
                'field' => 'term_id',
                'terms'         => implode(',', $uniuqcat),
                'operator'      => 'IN'
            ),
            array(
                'taxonomy'      => 'product_visibility',
                'field'         => 'slug',
                'terms'         => 'exclude-from-catalog',
                'operator'      => 'NOT IN'
            )
        )
    );
    $loop = new WC_Product_Query($args);
    $products = $loop->get_products();
    if ($products) {
        $html .= '<div id="suggestion" style="padding: 20px 0;border-top: 1px solid #eee;">';
            $html .= '<h2 style="text-align: center;font-weight: 400;color: #000;">PLUS, MORE THINGS YOU MAY LIKE</h2>';
            $html .= '<table style="width: 100%;table-layout: fixed;border-collapse: collapse;">';
                $html .= '<tbody>';
                    $html .= '<tr>';
                            $i=0;
                            foreach ( $products as $product ) {
                                if (in_array($product->get_id(), $pid)) {
                                    continue;
                                }
                                $html .= '<td align="center" style="padding: 5px;border: 1px solid #eee;">';
                                if (has_post_thumbnail( $product->get_id() )) {
                                    $html .= get_the_post_thumbnail($product->get_id(), 'shop_catalog');
                                } else {
                                    $html .= '<img src="'.woocommerce_placeholder_img_src().'" alt="Placeholder" width="300px" height="300px" />';
                                }
                                $html .= '<h3><a style="color: #000;font-weight: normal;text-decoration: none;font-size: 13px;text-align: center;display: block;line-height: 16px;" href="'.get_permalink( $product->get_id() ).'">'.esc_attr($product->get_title() ? $product->get_title() : $product->get_id()).'</a></h3>';
                                $html .= '<p><a style="font-weight: normal;text-decoration: none;display: block;margin: 0 auto;max-width: 72px;padding: 4px 9px;text-align: center;background-color: #000;color: #fff;font-size: 13px;" href="'.get_permalink( $product->get_id() ).'" class="shop-now">Shop Now</a></p>';
                                $i++;
                                if($i==4) break;
                            }
                    $html .= '</tr>';
                $html .= '</tbody>';
            $html .= '</table>';
        $html .= '</div>';
    }
    // now return the preapred html
    return $html;
}
// register shortcode
add_shortcode('email_product_suggestion', 'order_mail_product_suggestion');

然后在电子邮件模板中调用该函数,如下所示:-

// Product suggestions
$order = $email->object;
if ( $order ) {
   $id = $order->get_id();
   echo do_shortcode( '[email_product_suggestion id="'.$id.'" ]' );
}

这将显示当前订单商品所属类别中的商品,并排除订单中已有商品。