/** * Misc funcitons */ /** * Get min/max price for WooCommerce products */ function jet_smart_filters_woo_prices( $args = array() ) { global $wpdb; if ( ! function_exists( 'wc' ) ) { return false; } $wc_query = wc()->query->get_main_query(); $tax_query = array(); if ( $wc_query ) { $wc_queried_object = $wc_query->queried_object; if ( ! empty( $wc_queried_object->taxonomy ) && ! empty( $wc_queried_object->term_id ) ) { $tax_query[] = array( 'taxonomy' => $wc_queried_object->taxonomy, 'terms' => array( $wc_queried_object->term_id ), 'field' => 'term_id', ); } } $tax_query = new WP_Tax_Query( $tax_query ); $tax_query_sql = $tax_query->get_sql( $wpdb->posts, 'ID' ); $sql = "SELECT min( FLOOR( price_meta.meta_value ) ) as min, max( CEILING( price_meta.meta_value ) ) as max FROM {$wpdb->posts} "; $sql .= " LEFT JOIN {$wpdb->postmeta} as price_meta ON {$wpdb->posts}.ID = price_meta.post_id " . $tax_query_sql['join']; $sql .= " 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' AND price_meta.meta_key IN ('" . implode( "','", array_map( 'esc_sql', apply_filters( 'woocommerce_price_filter_meta_keys', array( '_price' ) ) ) ) . "') AND price_meta.meta_value > '' "; $sql .= $tax_query_sql['where']; if ( $wc_query ) { $search = WC_Query::get_main_search_query_sql(); } else { $search = false; } if ( $search ) { $sql .= ' AND ' . $search; } $price = $wpdb->get_row( $sql, ARRAY_A ); if ( class_exists( 'woocommerce_wpml' ) ){ $price['min'] = apply_filters( 'wcml_raw_price_amount', floatval( $price['min'] ) ); $price['max'] = apply_filters( 'wcml_raw_price_amount', floatval( $price['max'] ) ); } return $price; // WPCS: unprepared SQL ok. } /** * Callback to get min/max value for meta key */ function jet_smart_filters_meta_values( $args = array() ) { $key = ! empty( $args['key'] ) ? $args['key'] : false; if ( ! $key ) { return array(); } global $wpdb; $queried_object = get_queried_object(); $tax_query = array(); if ( ! empty( $queried_object->taxonomy ) && ! empty( $queried_object->term_id ) ) { $tax_query[] = array( 'taxonomy' => $queried_object->taxonomy, 'terms' => array( $queried_object->term_id ), 'field' => 'term_id', ); } $tax_query = new WP_Tax_Query( $tax_query ); $tax_query_sql = $tax_query->get_sql( 'pm', 'post_id' ); $search_in_statuses = apply_filters( 'jet-smart-filters/dynamic-min-max/search-statuses', array( 'publish' ) ); $search_in_statuses = implode( ', ', array_map( function( $status ) { return '\'' . $status . '\''; }, $search_in_statuses ) ); $sql = "SELECT min( FLOOR( pm.meta_value ) ) as min, max( CEILING( pm.meta_value ) ) as max FROM $wpdb->postmeta AS pm"; $sql .= " INNER JOIN $wpdb->posts AS p ON p.ID = pm.post_id"; $sql .= $tax_query_sql['join']; $sql .= " WHERE pm.meta_key IN ('" . str_replace( ',', '\',\'', str_replace( ' ', '', $key ) ) . "')"; $sql .= " AND p.post_status IN ( $search_in_statuses )"; $sql .= $tax_query_sql['where']; $data = $wpdb->get_results( $sql, ARRAY_A ); if ( ! empty( $data ) ) { return $data[0]; } else { return array(); } } /** * Callback to get min/max value for meta key */ function jet_smart_filters_term_meta_values( $args = array() ) { $key = ! empty( $args['key'] ) ? $args['key'] : false; if ( ! $key ) { return array(); } global $wpdb; $sql = "SELECT min( FLOOR( tm.meta_value ) ) as min, max( CEILING( tm.meta_value ) ) as max FROM $wpdb->termmeta AS tm"; $sql .= " WHERE tm.meta_key IN ('" . str_replace( ',', '\',\'', str_replace( ' ', '', $key ) ) . "')"; $data = $wpdb->get_results( $sql, ARRAY_A ); if ( ! empty( $data ) ) { return $data[0]; } else { return array(); } } /** * Callback to get min/max value for meta key */ function jet_smart_filters_user_meta_values( $args = array() ) { $key = ! empty( $args['key'] ) ? $args['key'] : false; if ( ! $key ) { return array(); } global $wpdb; $sql = "SELECT min( FLOOR( um.meta_value ) ) as min, max( CEILING( um.meta_value ) ) as max FROM $wpdb->usermeta AS um"; $sql .= " WHERE um.meta_key IN ('" . str_replace( ',', '\',\'', str_replace( ' ', '', $key ) ) . "')"; $data = $wpdb->get_results( $sql, ARRAY_A ); if ( ! empty( $data ) ) { return $data[0]; } else { return array(); } } /** * Returns current currency symbol */ function jet_smart_filters_woo_currency_symbol() { $currency = apply_filters( 'jet-smart-filters/woocommerce/currency-symbol', get_woocommerce_currency_symbol() ); return $currency; } /** * Do macros inside string */ function jet_smart_filters_macros( $string, $field_value = null ) { $macros = apply_filters( 'jet-smart-filters/macros/macros-list', array( 'woocommerce_currency_symbol' => 'jet_smart_filters_woo_currency_symbol', ) ); return preg_replace_callback( '/%([a-z_-]+)(\|[a-z0-9_-]+)?%/', function ( $matches ) use ( $macros, $field_value ) { $found = $matches[1]; if ( ! isset( $macros[ $found ] ) ) { return $matches[0]; } $cb = $macros[ $found ]; if ( ! is_callable( $cb ) ) { return $matches[0]; } $args = isset( $matches[2] ) ? ltrim( $matches[2], '|' ) : false; return call_user_func( $cb, $field_value, $args ); }, $string ); }
Warning: session_start(): Session cannot be started after headers have already been sent in /srv/users/benmetcalfe/apps/ewc/public/wp-content/plugins/jet-data-importer/jet-data-importer.php on line 371
https://www.essencewellnessclinic.co.nz/post-sitemap.xml 2024-11-20T08:03:14+00:00 https://www.essencewellnessclinic.co.nz/page-sitemap.xml 2024-02-15T22:34:51+00:00 https://www.essencewellnessclinic.co.nz/jet-popup-sitemap.xml 2021-03-04T12:13:27+00:00 https://www.essencewellnessclinic.co.nz/jet-woo-builder-sitemap.xml 2024-02-16T00:57:39+00:00 https://www.essencewellnessclinic.co.nz/metform-form-sitemap.xml 2024-01-10T06:49:01+00:00 https://www.essencewellnessclinic.co.nz/jet-theme-core-sitemap.xml 2024-02-01T01:46:11+00:00 https://www.essencewellnessclinic.co.nz/category-sitemap.xml 2024-11-20T08:03:14+00:00 https://www.essencewellnessclinic.co.nz/author-sitemap.xml 2023-12-14T06:25:10+00:00