Woocommerce - 在类别页面顶部显示特色产品

时间:2018-05-10 18:02:11

标签: woocommerce categories product archive featured

我希望在每个产品类别页面的顶部都有一个部分,从该类别中随机显示三个特色产品。在此之下将是常规归档循环。

在不使用插件的情况下,实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

以下代码可以为您提供帮助:

    add_filter('posts_orderby', 'show_featured_products_orderby',10,2);
function show_featured_products_orderby($order_by, $query){
  global  $wpdb ;
  if( ($query->get('post_type')=='product') && (!is_admin()) ){
    $orderby_value = ( isset( $_GET['orderby'] ) ? wc_clean( (string) $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) ) );
    $orderby_value_array = explode( '-', $orderby_value );
    $orderby = esc_attr( $orderby_value_array[0] );
    $order = ( !empty($orderby_value_array[1]) ? $orderby_value_array[1] : 'ASC' );
    $feture_product_id = wc_get_featured_product_ids();
    if ( is_array( $feture_product_id ) && !empty($feture_product_id) ) {
      if ( empty($order_by) ) {
        $order_by = "FIELD(" . $wpdb->posts . ".ID,'" . implode( "','", $feture_product_id ) . "') DESC ";
      } else {
        $order_by = "FIELD(" . $wpdb->posts . ".ID,'" . implode( "','", $feture_product_id ) . "') DESC, " . $order_by;
      }
    }  
  }
  return $order_by;
}

将此代码添加到活动主题function.php文件中

答案 1 :(得分:1)

我按类别显示了特色产品,并创建了一个带有短代码的简单插件。在这里https://jameshwartlopez.com/plugin/get-featured-products-of-a-category/中查看完整的注释。

基本上,您只需要下载并安装我创建的插件https://github.com/jameshwartlopez/jvl-featured-product-by-category

然后在您的functions.php文件中,您可以挂接到woocommerce_before_shop_loop或woocommerce_archive_description。测试哪个挂钩对您的网站来说还可以。下面是一个示例。

<?php

add_action('woocommerce_before_shop_loop', function() {

    if(is_product_category()){
        $current_term = get_queried_object();
        $cat_slug = $current_term->slug
        echo do_shortcode( "[featured_products_by_category cat='".$cat_slug."']" );
    }

});