Sort and display products based on your preference

Sorting and displaying products based on your preference - the old WooCommerce product selling technique

Firefox Screenshot 2024 09 21T15 49 49.837Z

Displaying your desired products or old products that are on the last pages of the store in the first option of the store page can make these products sell faster

You should put this code at the end of your function file and save it

view Other methods of increase Online store income



 
// Replace "default sorting" option with a custom one
 
add_filter( 'woocommerce_catalog_orderby', 'rezvan_woocommerce_catalog_orderby_custom' );
 
function rezvan_woocommerce_catalog_orderby_custom( $sortby ) {
    $sortby['featured'] = __( 'Default sorting', 'woocommerce' );
   unset( $sortby['menu_order'] );
    return $sortby;
}
 
// Make the custom one the default one
 
add_filter( 'woocommerce_default_catalog_orderby', 'rezvan_woocommerce_catalog_orderby_custom_default' );
 
function rezvan_woocommerce_catalog_orderby_custom_default() {
   return 'featured';
}
 
// Set sorting for new option
 
add_filter( 'woocommerce_get_catalog_ordering_args', 'rezvan_woocommerce_catalog_orderby_custom_args' );
 
function rezvan_woocommerce_catalog_orderby_custom_args( $args ) {
   $orderby_value = isset( $_GET['orderby'] ) ? wc_clean( $_GET['orderby'] ) : apply_filters( 'woocommerce_default_catalog_orderby', get_option( 'woocommerce_default_catalog_orderby' ) );
   if ( 'featured' == $orderby_value ) {
      $args['orderby'] = 'menu_order title';
      $args['order'] = '';
      $args['meta_key'] = '';
   }
   return $args;
}
 
// Adjust order to allow for featured posts
 
add_filter( 'posts_orderby', 'rezvan_woocommerce_catalog_orderby_custom_featured_first', 10, 2 );
 
function rezvan_woocommerce_catalog_orderby_custom_featured_first( $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' );
      $featured_product_ids = wc_get_featured_product_ids();
      if ( $orderby == "featured" && is_array( $featured_product_ids ) && ! empty( $featured_product_ids ) ) {
         if ( empty( $order_by ) ) {
            $order_by = "FIELD(" . $wpdb->posts . ".ID,'" . implode( "','", $featured_product_ids ) . "') DESC ";
         } else {
            $order_by = "FIELD(" . $wpdb->posts . ".ID,'" . implode( "','", $featured_product_ids ) . "') DESC, " . $order_by;
         }
      }  
   }
   return $order_by;
}

Leave a Reply

Your email address will not be published. Required fields are marked *

fourteen + eleven =

 
Online-Chat

We are ready to answer your questions