将特色产品推广到 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单一产品页面上的添加到购物车按钮替换为产品类别