将特色产品推广到 WooCommerce 的类别顶部 [重复]

Posted

技术标签:

【中文标题】将特色产品推广到 WooCommerce 的类别顶部 [重复]【英文标题】:Promote featured products to top of category in WooCommerce [duplicate] 【发布时间】:2020-03-02 17:54:44 【问题描述】:

我希望在分类存档页面中首先推广和列出特色产品。

我发现有很多人有类似的需求,但没有理想的解决方案,所以我在这里发布此信息,以供其他寻求此解决方案的人使用。

【问题讨论】:

【参考方案1】:

以下代码将在 WooCommerce 显示设置(在可视化定制器中)的“产品目录”部分的排序选项中添加“推荐”选项。将此新选项设置为您的默认排序选项,以将特色产品提升到顶部并首先列出。

将此代码添加到文件中的functions.php(一如既往,使用子主题或代码sn-p插件):

//add new sorting option
add_filter( 'woocommerce_default_catalog_orderby_options', 'custom_woocommerce_catalog_orderby' );
add_filter( 'woocommerce_catalog_orderby', 'custom_woocommerce_catalog_orderby' );
function custom_woocommerce_catalog_orderby( $sortby ) 
    $sortby['recommended'] = 'Recommended';
    return $sortby;


//set default sorting for new option
add_filter( 'woocommerce_get_catalog_ordering_args', 'custom_woocommerce_get_catalog_ordering_args' );
function custom_woocommerce_get_catalog_ordering_args( $args ) 
  $orderby_value = isset( $_GET['orderby'] ) ? wc_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
    if ( 'recommended' == $orderby_value ) 
        $args['orderby'] = 'date';
        $args['order'] = 'DESC';
        $args['meta_key'] = '';
    
    return $args;


//adjust order to allow for featured posts
add_filter('posts_orderby', 'show_featured_products_orderby',10,2);
function show_featured_products_orderby($order_by, $query)
  global  $wpdb ;
  if( (!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();
    //only apply to recommended sorting option
    if ( $orderby == "recommended" && 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;

【讨论】:

以上是关于将特色产品推广到 WooCommerce 的类别顶部 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

除某些 WooCommerce 产品类别外,自动将产品添加到购物车

如何将特定类别的产品页面重定向到 Woocommerce 中的购物车页面

自定义特定 WooCommerce 产品类别上的“添加到购物车”按钮

将Woocommerce单一产品页面上的添加到购物车按钮替换为产品类别

php 隐藏WooCommerce中的产品类别。如果要在商店页面上隐藏产品类别计数,则只需将此代码添加到t

移动到新域后,Woocommerce 产品和类别无法显示