在Woocommerce 3中获取特色产品

时间:2018-02-18 05:19:49

标签: php wordpress woocommerce product featured

我想在新订单电子邮件模板中为追加销售(或最新产品或畅销产品)添加精选产品。它像Upsell一样使用电子邮件营销。如何将其添加到woocommerce电子邮件模板中,以便电子邮件末尾有一个部分显示我的精选/近期/畅销产品。我尝试在新订单电子邮件模板中使用此代码,但没有任何作用。我使用了所有最新版本的wordpress n woocommerce。

onBackPressed() if(mDrawerLayout.isDrawerOpen(GravityCompat.START)) {
  //drawer is open
} else { startActivity(...)}

2 个答案:

答案 0 :(得分:5)

自Woocommerce 3以来,产品属于以下属性:

  • “精选”,
  • “库存状态”,
  • “目录可见性”
  • “评级系统”

现在存储为'product_visibility' 分类下的帖子,以获得更好的效果。所以旧的postmeta数据不再起作用了。

要使代码正常工作,您需要以这种方式制作tax_query

function custom_featured_products(){

    $query = new WP_Query( array(
        'post_type' => 'product',
        'post_status' => 'publish',
        'posts_per_page' => -1 ,
        'tax_query' => array( array(
            'taxonomy' => 'product_visibility',
            'field'    => 'term_id',
            'terms'    => 'featured',
            'operator' => 'IN',
        ) )
    ) );

    $featured_product_names = array();

    if ( $query->have_posts() ): while ( $query->have_posts() ): $query->the_post();

            $product = wc_get_product( $query->post->ID );

            $featured_product_names[] = $product->get_title();

    endwhile; wp_reset_query();endif;

    // Testing output
    echo '<p>Featured products: ' . implode(', ', $featured_product_names) . '</p>';
}

// Displaying the featured products names in new order email notification
add_action ('woocommerce_email_customer_details', 'new_order_featured_products_display', 30, 4 );
function new_order_featured_products_display( $order, $sent_to_admin, $plain_text, $email ){
    // Only for "New Order" email notification
    if( 'new_order' != $email->id ) return;

    custom_featured_products(); // calling the featured products function output
}

此代码位于您的活动子主题(或主题)的function.php文件中。

经过测试和工作。

  

与您的评论相关的更新内容......

     

在通过“新订单”电子邮件通知中的钩子函数调用的函数中添加了代码。

     

要使用产品图片:$product->get_image( 'shop_thumbnail' );
  要获取产品链接,请使用:$product->get_permalink();

答案 1 :(得分:0)

<ul class="products">
    <?php
        $args = array(
            'post_type' => 'product',
            'posts_per_page' => 12,
            'tax_query' => array(
                    array(
                        'taxonomy' => 'product_visibility',
                        'field'    => 'name',
                        'terms'    => 'featured',
                    ),
                ),
            );
        $loop = new WP_Query( $args );
        if ( $loop->have_posts() ) {
            while ( $loop->have_posts() ) : $loop->the_post();
               echo '<p>'.get_the_title().'</p>';
            endwhile;
        } else {
            echo __( 'No products found' );
        }
        wp_reset_postdata();
    ?>
</ul><!--/.products-->