//Add a stylesheet after default style.css wp_enqueue_style( 'my-css', get_template_directory_uri() . 'my-css.css', array('themename-style')); //WooCommerce - Sort products by SKU add_filter('woocommerce_get_catalog_ordering_args', 'custom_woocommerce_catalog_orderby'); function custom_woocommerce_catalog_orderby( $args ) { $args['meta_key'] = '_sku'; $args['orderby'] = 'meta_value'; $args['order'] = 'asc'; return $args; } //WooCommerce - Remove Variation Price from Single Product Page add_filter('woocommerce_variable_price_html','custom_from',10); add_filter('woocommerce_grouped_price_html','custom_from',10); add_filter('woocommerce_variable_sale_price_html','custom_from',10); function custom_from($price){ return false; } // WooCommerce - add SKU in category page before price add_action( 'woocommerce_after_shop_loop_item_title', 'prima_custom_shop_item', 1); function prima_custom_shop_item() { global $post, $product; /* product sku */ echo '

SKU: '.$product->get_sku().'

'; } //show empty product categories add_filter( 'woocommerce_product_subcategories_hide_empty', 'show_empty_categories', 10, 1 ); function show_empty_categories ( $show_empty ) { $show_empty = true; // You can add other logic here too return $show_empty; } //Hide subcategory count in woocommerce add_filter( 'woocommerce_subcategory_count_html', 'custom_hide_category_count' ); function custom_hide_category_count() { // No count } //Remove Related Products remove_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20); //Remove Product Sort Dropdown on Category Page remove_action( 'woocommerce_before_shop_loop', 'woocommerce_catalog_ordering', 30 ); //Remove Result Count on Category Page remove_action( 'woocommerce_before_shop_loop', 'woocommerce_result_count', 20 ); //Disable Search Results Redirect to Product Page add_filter( 'woocommerce_redirect_single_search_result', '__return_false' ); //force display empty subcategories in category pages add_filter( 'woocommerce_product_subcategories_hide_empty', 'so_28060317', 10, 1 ); function so_28060317 ( $show_empty ) { $show_empty = true; return $show_empty; } // Change number or products per row to 3 add_filter('loop_shop_columns', 'loop_columns'); if (!function_exists('loop_columns')) { function loop_columns() { return 3; // 3 products per row } } // Display 24 products per page. Goes in functions.php add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 24;' ), 20 ); //display category image on category page add_action( 'woocommerce_archive_description', 'woocommerce_category_image', 2 ); function woocommerce_category_image() { if ( is_product_category() ){ global $wp_query; $cat = $wp_query->get_queried_object(); $thumbnail_id = get_woocommerce_term_meta( $cat->term_id, 'thumbnail_id', true ); $image = wp_get_attachment_url( $thumbnail_id ); if ( $image ) { echo ''; } } } //remove related products from single product page remove_action ( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20); //remove price from single product page remove_action ( 'woocommerce_single_product_summary', 'woocommerce_template_single_price', 10); // hide product price on category page function woo_product_listing_remove_price(){ remove_action( 'woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price', 10); } add_action( 'init', 'woo_product_listing_remove_price' ); remove_action( 'woocommerce_before_subcategory_title', 'woocommerce_subcategory_thumbnail', 10); add_action( 'woocommerce_before_subcategory_title', 'woocommerce_subcategory_thumbnail', 10); // WooCommerce Loop Subcategory Thumbs - Add Image Wrapper if ( ! function_exists( 'woocommerce_subcategory_thumbnail' ) ) { function woocommerce_subcategory_thumbnail( $category ) { $small_thumbnail_size = apply_filters( 'single_product_small_thumbnail_size', 'shop_catalog' ); $dimensions = wc_get_image_size( $small_thumbnail_size ); $thumbnail_id = get_woocommerce_term_meta( $category->term_id, 'thumbnail_id', true ); if ( $thumbnail_id ) { $image = wp_get_attachment_image_src( $thumbnail_id, $small_thumbnail_size ); $image = $image[0]; } else { $image = wc_placeholder_img_src(); } if ( $image ) { // Prevent esc_url from breaking spaces in urls for image embeds // Ref: http://core.trac.wordpress.org/ticket/23605 $image = str_replace( ' ', '%20', $image ); echo '
' . esc_attr( $category->name ) . '
'; } } } remove_action( 'woocommerce_before_subcategory_title', 'woocommerce_subcategory_thumbnail', 10); add_action( 'woocommerce_before_subcategory_title', 'woocommerce_subcategory_thumbnail', 10); //Minimum Order Dollar Amount for a specific product (this example: Curtain Wall must be $100 or more) add_action( 'woocommerce_check_cart_items', 'spyr_set_min_total' ); function spyr_set_min_total() { // Only run in the Cart or Checkout pages if( is_cart() || is_checkout() ) { global $woocommerce; // Set minimum Curtain Wall total $minimum_cart_total = 100; // Total we are going to be using for the Math // This is before taxes and shipping charges $total = 0; //foreach products in the cart () foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) { $_product = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key ); //curtain wall product id == 3288 $product_id = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key ); if (strcmp($cart_item['product_id'], "3288") == 0 ) { $subtotal = $_product->get_price() * (float)$cart_item['quantity']; $total = $total + $subtotal; } } // Will display a message along the lines of // A Minimum of 100 USD is required before checking out. (Cont. below) // Current cart total: 6 USD if( $total <= $minimum_cart_total ) { // Display our error message wc_add_notice( sprintf( 'A Minimum subtotal of $%s %s is required for Curtain Walls before checking out.' .'
Current cart\'s total: $%s %s', $minimum_cart_total, get_option( 'woocommerce_currency'), $total, get_option( 'woocommerce_currency') ), 'error' ); } } }