حداقل و حداکثر قیمت ها در ووکامرس
پیدا کردن حداقل و حداکثر قیمت ها در ووکامرس
من به دنبال راهی بودم که قیمت کمترین محصول که در ووکامرس وجود دارد را پیدا کنم
اما خب مشکلات بود که قیمت برنمیگردوند تا من به دنبال نوشتن آن برخواستم و به چیزای جالبی رسیدم:)
function get_filtered_price_sample() { global $wpdb; $args = WC()->query->get_main_query()->query_vars; $tax_query = isset( $args['tax_query'] ) ? $args['tax_query'] : array(); $meta_query = isset( $args['meta_query'] ) ? $args['meta_query'] : array(); if ( ! is_post_type_archive( 'product' ) && ! empty( $args['taxonomy'] ) && ! empty( $args['term'] ) ) { $tax_query[] = WC()->query->get_main_tax_query(); } foreach ( $meta_query + $tax_query as $key => $query ) { if ( ! empty( $query['price_filter'] ) || ! empty( $query['rating_filter'] ) ) { unset( $meta_query[ $key ] ); } } $meta_query = new WP_Meta_Query( $meta_query ); $tax_query = new WP_Tax_Query( $tax_query ); $search = WC_Query::get_main_search_query_sql(); $meta_query_sql = $meta_query->get_sql( 'post', $wpdb->posts, 'ID' ); $tax_query_sql = $tax_query->get_sql( $wpdb->posts, 'ID' ); $search_query_sql = $search ? ' AND ' . $search : ''; $sql = " SELECT min( min_price ) as min_price, MAX( max_price ) as max_price FROM {$wpdb->wc_product_meta_lookup} WHERE product_id IN ( SELECT ID FROM {$wpdb->posts} " . $tax_query_sql['join'] . $meta_query_sql['join'] . " WHERE {$wpdb->posts}.post_type IN ('" . implode( "','", array_map( 'esc_sql', apply_filters( 'woocommerce_price_filter_post_type', array( 'product' ) ) ) ) . "') AND {$wpdb->posts}.post_status = 'publish' " . $tax_query_sql['where'] . $meta_query_sql['where'] . $search_query_sql . ' )'; return $wpdb->get_row( $sql ); }
کافیه شما برای نمایش خروجی از نمونه کدهای زیر برای حداقل و حداکثر استفاده کنید
get_filtered_price_sample()->min_price
و برای بیشترین مبلغ :
get_filtered_price_sample()->max_price
کاربردهای آن :
- اگر فیلتر جستجو خواصی دارید طراحی میکنید و میخواهید بر اساس حداقل و حداکثر نمایش دهد همانند دیوار