/
home
/
infinitibizsol
/
ridecashout.com
/
wp-content
/
themes
/
cardealer
/
includes
/
File Upload :
llllll
Current File: /home/infinitibizsol/ridecashout.com/wp-content/themes/cardealer/includes/cars_functions.php
<?php // phpcs:ignore WordPress.Files.FileName.NotHyphenatedLowercase /** * Theme vehicle functions * * @author TeamWP @Potenza Global Solutions * @package CarDealer/Functions * @version 1.0.0 */ if ( ! function_exists( 'cardealer_vehicle_title' ) ) { /** * Vehicle Details Page Vehicle title. * * @param string $title . */ function cardealer_vehicle_title() { global $car_dealer_options; $is_custom_cars_details_title = ( isset( $car_dealer_options['vehicle-title-location'] ) ) ? $car_dealer_options['vehicle-title-location'] : false; if ( $is_custom_cars_details_title === 'header' ) { the_title( '<h2 class="car-title">', '</h2>' ); } } } if ( ! function_exists( 'cardealer_taxonomy_template_chooser' ) ) { /** * Template redirection to archive-cars.php for taxonomy page template. * * @param string $template . */ function cardealer_taxonomy_template_chooser( $template ) { global $wp_query; if ( is_tax() ) { $current_taxonomy = get_query_var( 'taxonomy' ); if ( $current_taxonomy ) { $current_taxonomy_object = get_taxonomy( $current_taxonomy ); $current_post_types = $current_taxonomy_object->object_type; if ( in_array( 'cars', $current_post_types ) ) { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict $new_template = locate_template( array( 'archive-cars.php' ) ); if ( '' !== $new_template ) { $template = $new_template; } } } } return $template; } } add_filter( 'template_include', 'cardealer_taxonomy_template_chooser', 99 ); add_action( 'cardealer_car_loop_link_open', 'cardealer_car_link_open', 10, 2 ); add_action( 'cardealer_car_loop_link_close', 'cardealer_car_link_close', 10, 2 ); if ( ! function_exists( 'cardealer_car_link_open' ) ) { /** * Car link open. * * @param string $id . * @param string $is_hover_overlay . */ function cardealer_car_link_open( $id, $is_hover_overlay ) { if ( 'no' === $is_hover_overlay ) { echo '<a href="' . esc_url( get_the_permalink( $id ) ) . '">'; } } } if ( ! function_exists( 'cardealer_car_link_close' ) ) { /** * Link close * * @param string $id . * @param string $is_hover_overlay . */ function cardealer_car_link_close( $id, $is_hover_overlay ) { if ( 'no' === $is_hover_overlay ) { echo '</a>'; } } } if ( ! function_exists( 'cardealer_is_hover_overlay' ) ) { /** * Hover overlay */ function cardealer_is_hover_overlay() { global $car_dealer_options; $is_hover_overlay = 'yes'; if ( isset( $car_dealer_options['cars-is-hover-overlay-on'] ) && ! empty( $car_dealer_options['cars-is-hover-overlay-on'] ) ) { $is_hover_overlay = $car_dealer_options['cars-is-hover-overlay-on']; } return $is_hover_overlay; } } add_action( 'car_before_overlay_banner', 'cardealer_get_cars_condition', 10, 2 ); add_action( 'car_before_overlay_banner', 'cardealer_get_cars_status', 20, 2 ); /** * Actions to used in car listing loop items overlay : Default Listing Style */ add_action( 'car_overlay_banner', 'cardealer_view_cars_overlay_link', 10, 1 ); add_action( 'car_overlay_banner', 'cardealer_compare_cars_overlay_link', 20, 1 ); add_action( 'car_overlay_banner', 'cardealer_images_cars_overlay_link', 30, 1 ); add_action( 'car_overlay_banner', 'cardealer_wishlist_cars_overlay_link', 40, 1 ); if ( ! function_exists( 'cardealer_view_cars_overlay_link' ) ) { /** * Get overlay link for view car details page * * @param string $id . */ function cardealer_view_cars_overlay_link( $id ) { $html = '<li><a href="' . get_the_permalink( $id ) . '" data-toggle="tooltip" title="' . esc_attr__( 'View', 'cardealer' ) . '"><i class="fas fa-link"></i></a></li>'; /** * Filters the HTML content of the vehicle detail page link in vehicle listing. * * @since 1.0 * @param string $html Vehicle detail page link HTML content. * @visible true */ echo apply_filters( 'cardealer_view_cars_overlay_link', $html ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } } if ( ! function_exists( 'cardealer_wishlist_cars_overlay_link' ) ) { /** * Wishlist cars overlay link * * @param string $id . */ function cardealer_wishlist_cars_overlay_link( $id ) { global $car_dealer_options; $wishlist_status = ( isset( $car_dealer_options['cars-is-wishlist-on'] ) ) ? $car_dealer_options['cars-is-wishlist-on'] : 'yes'; if ( 'no' === $wishlist_status ) { return; } $text = false; $list_style = cardealer_get_inv_list_style(); if ( 'classic' === $list_style ) { $text = true; } cardealer_wishlist_button( $id, $text ); } } if ( ! function_exists( 'cardealer_wishlist_button' ) ) { /** * Wishlist cars overlay link * * @param string $id . */ function cardealer_wishlist_button( $id, $text = false ) { global $car_dealer_options, $post; if ( ! is_user_logged_in() ) { return; } if ( ! class_exists( 'CDFS_Wishlist' ) ) { return; } if ( (int) $post->post_author === (int) get_current_user_id() ) { return; } $wishlist_label = ''; if ( $text ) { $wishlist_label = isset( $car_dealer_options['add_to_wishlist_text'] ) ? $car_dealer_options['add_to_wishlist_text'] : esc_html__( 'Add to wishlist', 'cardealer' ); } $cdfs_wishlist = new CDFS_Wishlist(); $wishlist_class = 'pgs_wishlist'; $wishlist_icon_class = 'far fa-heart'; if ( $cdfs_wishlist->is_car_in_wishlist( $id ) ) { $wishlist_class .= ' added-wishlist'; $wishlist_icon_class = 'fas fa-heart'; $wishlist_label = isset( $car_dealer_options['added_to_wishlist_text'] ) ? $car_dealer_options['added_to_wishlist_text'] : esc_html__( 'Added to Wishlist', 'cardealer' ); } $html = '<li>'; $html .= '<a href="javascript:void(0)" data-toggle="tooltip" title="' . esc_attr__( 'Wishlist', 'cardealer' ) . '" data-id="' . esc_attr( $id ) . '" class="' . esc_attr( $wishlist_class ) . '">'; $html .= '<i class="pgs-wishlist-icon ' . esc_attr( $wishlist_icon_class ) . '"></i>'; $html .= '<span class="pgs-wishlist-label">'. esc_html( $wishlist_label ) . '</span>'; $html .= '</a>'; $html .= '</li>'; /** * Filters the HTML content of the vehicle gallery link in vehicle listing. * * @since 1.0 * @param string $html Wishlist button content. * @param string $id Vehicle ID. * @visible true */ echo apply_filters( 'cardealer_wishlist_button', $html, $id ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } } if ( ! function_exists( 'cardealer_compare_cars_overlay_link' ) ) { /** * Compare cars overlay link * * @param string $id . */ function cardealer_compare_cars_overlay_link( $id ) { global $car_dealer_options; $compare_status = ( isset( $car_dealer_options['cars-is-compare-on'] ) ) ? $car_dealer_options['cars-is-compare-on'] : 'yes'; if ( 'no' === $compare_status ) { return; } $car_in_compare = car_dealer_get_car_compare_ids(); $compared_pgs = ''; $icon = 'exchange-alt'; if ( $car_in_compare && in_array( $id, $car_in_compare, true ) ) { $icon = 'check'; $compared_pgs = 'compared_pgs'; } $html = '<li><a href="javascript:void(0)" data-toggle="tooltip" title="' . esc_attr__( 'Compare', 'cardealer' ) . '" class="compare_pgs ' . $compared_pgs . '" data-id="' . esc_attr( $id ) . '"><i class="fas fa-' . esc_attr( $icon ) . '"></i></a></li>'; /** * Filters the HTML content of the vehicle gallery link in vehicle listing. * * @since 1.0 * @param string $html Vehicle gallery link HTML content. * @visible true */ echo apply_filters( 'cardealer_compare_cars_overlay_link', $html ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } } if ( ! function_exists( 'cardealer_images_cars_overlay_link' ) ) { /** * Get overlay link for image gallery popup * * @param string $id . */ function cardealer_images_cars_overlay_link( $id ) { $images = cardealer_get_images_url( 'car_catalog_image', $id ); $html = ''; if ( ! empty( $images ) ) { $html = '<li class="pssrcset"><a href="javascript:void(0)" data-toggle="tooltip" title="' . esc_attr__( 'Gallery', 'cardealer' ) . '" class="psimages" data-image="' . implode( ', ', $images ) . '"><i class="fas fa-expand"></i></a></li>'; } /** * Filters the HTML content of the vehicle gallery link in vehicle listing. * * @since 1.0 * @param string $html Vehicle gallery link HTML content. * @visible true */ echo apply_filters( 'cardealer_images_cars_overlay_link', $html ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } } /** * Actions to used in car CLASSIC grid loop items overlay */ add_action( 'vehicle_classic_grid_overlay', 'cardealer_compare_cars_overlay_link', 10, 1 ); add_action( 'vehicle_classic_grid_overlay', 'cardealer_images_cars_overlay_link', 20, 1 ); add_action( 'vehicle_classic_grid_overlay', 'cardealer_wishlist_cars_overlay_link', 30, 1 ); /** * Actions to used in car CLASSIC listing loop items overlay */ add_action( 'vehicle_classic_list_overlay_banner', 'cardealer_classic_view_cars_overlay_link', 10, 1 ); add_action( 'vehicle_classic_list_overlay_banner', 'cardealer_classic_compare_cars_overlay_link', 20, 1 ); add_action( 'vehicle_classic_list_overlay_gallery', 'cardealer_classic_images_cars_overlay_link', 10, 1 ); add_action( 'vehicle_classic_list_overlay_banner', 'cardealer_classic_vehicle_video_link', 30, 1 ); add_action( 'vehicle_classic_list_overlay_banner', 'cardealer_wishlist_cars_overlay_link', 40, 1 ); if ( ! function_exists( 'cardealer_classic_view_cars_overlay_link' ) ) { /** * Get overlay link for view car details page * * @param string $id . */ function cardealer_classic_view_cars_overlay_link( $id ) { $html = '<li><a href="' . get_the_permalink( $id ) . '" data-toggle="tooltip" title="' . esc_attr__( 'View', 'cardealer' ) . '"><i class="fas fa-link"></i>' . esc_html__( 'Detail', 'cardealer' ) . '</a></li>'; /** * Filters the HTML content of the vehicle detail page link in vehicle listing. * * @since 1.0 * @param string $html Vehicle compare detail page link HTML content. * @visible true */ echo apply_filters( 'cardealer_classic_view_cars_overlay_link', $html ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } } if ( ! function_exists( 'cardealer_classic_compare_cars_overlay_link' ) ) { /** * Get overlay link for compare cars popup * * @param string $id . */ function cardealer_classic_compare_cars_overlay_link( $id ) { global $car_dealer_options; $compare_status = ( isset( $car_dealer_options['cars-is-compare-on'] ) ) ? $car_dealer_options['cars-is-compare-on'] : 'yes'; if ( 'no' === $compare_status ) { return; } // @codingStandardsIgnoreStart if ( isset( $_COOKIE['compare_ids'] ) && ! empty( $_COOKIE['compare_ids'] ) ) { $car_in_compare = json_decode( $_COOKIE['compare_ids'] ); } $compared_pgs = ''; $icon = 'exchange-alt'; if ( isset( $car_in_compare ) && ! empty( $car_in_compare ) && in_array( $id, $car_in_compare ) ) { $cars = json_decode( $_COOKIE['compare_ids'] ); if ( $cars ) { $icon = 'check'; $compared_pgs = 'compared_pgs'; } } // @codingStandardsIgnoreEnd $html = '<li><a href="javascript:void(0)" data-toggle="tooltip" title="' . esc_attr__( 'Compare', 'cardealer' ) . '" class="compare_pgs ' . $compared_pgs . '" data-id="' . esc_attr( $id ) . '"><i class="fas fa-' . $icon . '"></i>' . esc_html__( 'Compare', 'cardealer' ) . '</a></li>'; /** * Filters the HTML content of the vehicle compare link in vehicle listing. * * @since 1.0 * @param string $html Vehicle compare link HTML content. * @visible true */ echo apply_filters( 'cardealer_classic_compare_cars_overlay_link', $html ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } } if ( ! function_exists( 'cardealer_classic_images_cars_overlay_link' ) ) { /** * Get overlay link for image gallery popup * * @param string $id . */ function cardealer_classic_images_cars_overlay_link( $id ) { $images = cardealer_get_images_url( 'car_catalog_image', $id ); $html = ''; if ( ! empty( $images ) ) { $html = '<li class="pssrcset"><a href="javascript:void(0)" data-toggle="tooltip" title="' . esc_attr__( 'Gallery', 'cardealer' ) . '" class="psimages" data-image="' . implode( ', ', $images ) . '"><i class="fas fa-expand"></i></a></li>'; } /** * Filters the HTML content of the vehicle gallery link in vehicle listing. * * @since 1.0 * @param string $html Vehicle gallery link HTML content. * @visible true */ echo apply_filters( 'cardealer_classic_images_cars_overlay_link', $html ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } } if ( ! function_exists( 'cardealer_classic_vehicle_video_link' ) ) { /** * Get overlay link for video popup * * @param string $id . */ function cardealer_classic_vehicle_video_link( $id ) { $video_link = get_post_meta( $id, 'video_link', true ); $html = ''; if ( ! empty( $video_link ) ) { $html = '<li><a class="popup-youtube" href="' . esc_attr( $video_link ) . '" data-toggle="tooltip" title="' . esc_attr__( 'Video', 'cardealer' ) . '"> <i class="fas fa-play"></i>' . esc_html__( 'Video', 'cardealer' ) . '</a></li>'; } /** * Filters the HTML content of the vehicle video link in vehicle listing. * * @since 1.0 * @param string $html Vehicle video link HTML content. * @visible true */ echo apply_filters( 'cardealer_classic_vehicle_video_link', $html ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } } /** * Actions to used in car listing loop items title : Classic View */ add_action( 'cardealer_classic_list_car_title', 'cardealer_list_car_link_title', 10 ); /** * Actions to used in car listing loop items title : Default View */ add_action( 'cardealer_list_car_title', 'cardealer_list_car_link_title', 5 ); add_action( 'cardealer_list_car_title', 'cardealer_list_car_title_separator', 10 ); if ( ! function_exists( 'cardealer_list_car_link_title' ) ) { /** * Get loop items title and link */ function cardealer_list_car_link_title() { echo '<a href="' . esc_url( get_the_permalink() ) . '">' . esc_attr( get_the_title() ) . '</a>'; } } if ( ! function_exists( 'cardealer_list_car_title_separator' ) ) { /** * Get loop items title after separator */ function cardealer_list_car_title_separator() { echo '<span class="separator"></span>'; } } if ( ! function_exists( 'cardealer_link_feature_image_to_header' ) ) { /** * Add Facebook meta tags for sharing */ function cardealer_link_feature_image_to_header() { $post_featured_image = cardealer_get_single_image_url(); if ( ( is_single() && $post_featured_image ) && 'cars' === get_post_type() ) { echo '<meta property="og:type" content="article" />'; echo '<meta property="og:title" content="' . esc_attr( get_the_title() ) . '" />'; echo '<meta property="og:url" content="' . esc_attr( get_permalink() ) . '" />'; echo '<meta property="og:description" content="' . cardealer_car_short_content( get_the_ID() ) . '" />'; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE echo '<meta property="og:image" content="' . esc_attr( $post_featured_image ) . '" />'; echo '<link rel="image_src" href="' . esc_attr( $post_featured_image ) . '" />'; } } } add_action( 'wp_head', 'cardealer_link_feature_image_to_header', 10 ); if ( ! function_exists( 'cardealer_car_short_content' ) ) { /** * Get cars short content * * @param string $id . */ function cardealer_car_short_content( $id ) { $excerpt = get_post_field( 'post_excerpt', $id ); $vehicle_overview = get_post_meta( $id, 'vehicle_overview', true ); $summary = ' '; if ( ! empty( $excerpt ) ) { $summary = $excerpt; } elseif ( ! empty( $vehicle_overview ) ) { $summary = wp_trim_words( $vehicle_overview, 30, '...' ); } /** * Filters the vehicle summary(short) contents. * * @since 1.0 * @param string $summary Vehicle short contents. * @visible true */ return apply_filters( 'cardealer_car_short_content', $summary ); } } if ( ! function_exists( 'cardealer_get_cars_formated_mileage' ) ) { /** * Display formated mileage * * @param string $mileage . */ function cardealer_get_cars_formated_mileage( $mileage ) { global $car_dealer_options; if ( ! is_numeric( $mileage ) ) { return $mileage; } $vehicle_mileage_unit = isset( $car_dealer_options['vehicle_mileage_unit'] ) ? $car_dealer_options['vehicle_mileage_unit'] : 'none'; $display_mileage_separators = isset( $car_dealer_options['display-mileage-separators'] ) ? $car_dealer_options['display-mileage-separators'] : ''; $mileage_thousand_separator = isset( $car_dealer_options['mileage-thousand-separator'] ) ? $car_dealer_options['mileage-thousand-separator'] : ''; $mileage = ( filter_var( $display_mileage_separators, FILTER_VALIDATE_BOOLEAN ) ) ? number_format( $mileage, 0, '', $mileage_thousand_separator ) : $mileage; if ( $vehicle_mileage_unit && 'none' !== $vehicle_mileage_unit ) { $mileage = $mileage . ' ' . $vehicle_mileage_unit; } else { $mileage = $mileage; } return $mileage; } } if ( ! function_exists( 'cardealer_get_cars_attributes' ) ) { /** * Display cars features list in cars details page * * @param string $post_id . */ function cardealer_get_cars_attributes( $post_id = null ) { global $car_dealer_options; // bail early if $post_id is not provided. if ( ! $post_id ) { return; } if ( isset( $car_dealer_options['vehicle-detail-attributes'] ) && ! empty( $car_dealer_options['vehicle-detail-attributes'] ) ) { $taxonomys = apply_filters( 'cardealer_taxonomys_array', $car_dealer_options['vehicle-detail-attributes'] ); } else { $tax_arr = array( 'car_year', 'car_make', 'car_model', 'car_body_style', 'car_condition', 'car_mileage', 'car_transmission', 'car_drivetrain', 'car_engine', 'car_fuel_type', 'car_fuel_economy', 'car_trim', 'car_exterior_color', 'car_interior_color', 'car_stock_number', 'car_vin_number' ); $taxonomies_raw = get_object_taxonomies( 'cars' ); foreach ( $taxonomies_raw as $new_tax ) { if ( in_array( $new_tax, $tax_arr, true ) ) { continue; } $new_tax_obj = get_taxonomy( $new_tax ); if ( isset( $new_tax_obj->include_in_filters ) && true === (bool) $new_tax_obj->include_in_filters ) { $tax_arr[] = $new_tax; } } $taxonomys = apply_filters( 'cardealer_taxonomys_array', $tax_arr ); } /** * Filters the Array of the vehicle taxonomies used to display on the vehicle details page. * * @since 1.0 * @param array $taxonomys Array of the vehicle taxonomies selected to be display on vehicle detail page. * @param int $post_id Vehicle ID. * @visible true */ $taxonomys = apply_filters( 'cardealer_cars_details_attributes_array', $taxonomys, $post_id ); $attributes = array(); $taxonomies_obj = get_object_taxonomies( 'cars', 'object' ); foreach ( $taxonomys as $tax ) { $term = wp_get_post_terms( $post_id, $tax ); if ( ! is_wp_error( $term ) && ! empty( $term ) ) { $label = $taxonomies_obj[ $tax ]->labels->singular_name; $attributes[ $tax ] = array( 'attr' => $label, 'value' => $term[0]->name, ); } } /** * Filters the Array of the vehicle attributes used to display on the vehicle details page. * * @since 1.0 * @param array $attributes Array of the vehicle attributes selected to be display on vehicle detail page. * @param int $post_id Vehicle ID. * @visible true */ $attributes = apply_filters( 'cardealer_car_attributes', $attributes, $post_id ); $attributs_html = ''; if ( is_array( $attributes ) && ! empty( $attributes ) ) { $attributs_html = '<ul class="car-attributes">'; foreach ( $attributes as $attribute_k => $attribute ) { // skip if attribute or value is not set. if ( ( ! isset( $attribute['attr'] ) || '' === $attribute['attr'] ) || ( ! isset( $attribute['value'] ) || '' === $attribute['value'] ) ) { continue; } if ( 'car_mileage' === $attribute_k ) { $attribute_value = cardealer_get_cars_formated_mileage( $attribute['value'] ); } else { $attribute_value = $attribute['value']; } $attributs_html .= '<li class="' . esc_attr( $attribute_k ) . '"><span>' . $attribute['attr'] . '</span> <strong class="text-right">' . $attribute_value . '</strong></li>'; } $attributs_html .= '</ul>'; } // Deprecated. $attributs_html = apply_filters_deprecated( 'cardealer_get_cars_attributes', array( $attributs_html ), '1.1.1', 'cardealer_car_attributes_html' ); /** * Filters the HTML of the vehicle attributes to display on the vehicle details page. * * @since 1.0 * @param string $attributs_html HTML structure of the vehicle attributes to be display on the vehicle details page. * @param array $attributes Array of the vehicle attributes selected to be display on vehicle detail page. * @param int $post_id Vehicle ID. * @visible true */ $attributs_html = apply_filters( 'cardealer_car_attributes_html', $attributs_html, $attributes, $post_id ); $attributs_allowed_html = apply_filters( 'cardealer_car_attributes_allowed_html', array( 'ul', 'li', 'span', 'strong' ), $post_id ); echo wp_kses( $attributs_html, cardealer_allowed_html( $attributs_allowed_html ) ); } } if ( ! function_exists( 'cardealer_add_vehicle_to_cart' ) ) { /** * Display add vehicle to cart details page * * @param string $vehicle_id . */ function cardealer_add_vehicle_to_cart( $vehicle_id ) { $is_vehicle_sell = cardealer_is_vehicle_sellable( $vehicle_id ); if ( $is_vehicle_sell ) { global $car_dealer_options; $lable_text = sell_vehicle_lable_text(); ?> <div class="car-vehicle-buy-online add-vehicle-to-cart-btn"> <button class="vehicle-button-link car-buy-online-btn button vehicle-button-link-type-js_event" data-btn_type="js_event" href="javascript:void();" data-event="cardealer-vehicle-button-buy-online" data-vehicle_id="<?php echo esc_attr( $vehicle_id ); ?>"> <i class="fas fa-shopping-cart"></i><span class="car-buy-online-label"><?php echo esc_html( $lable_text ); ?><span> </button> </div> <?php } } } /** * Get vehicle stock. * * @param int|string $vehicle_id Vehicle ID. * @return int */ function cardealer_get_vehicle_stock( $vehicle_id = '' ) { $stock = 0; if ( empty( $vehicle_id ) ) { $post = get_post(); if ( $post && 'cars' === $post->post_type ) { $vehicle_id = $post->ID; } } if ( ! empty( $vehicle_id ) ) { $vehicle_in_stock = get_post_meta( $vehicle_id, 'total_vehicle_in_stock', true ); $vehicle_in_stock_exists = metadata_exists( 'post', $vehicle_id, 'total_vehicle_in_stock' ); if ( $vehicle_in_stock_exists ) { if ( (int) $vehicle_in_stock > 0 ) { $stock = (int) $vehicle_in_stock; } } else { global $car_dealer_options; $sell_vehicle_option = ( isset( $car_dealer_options['sell_vehicle_enable_all_option'] ) ) ? $car_dealer_options['sell_vehicle_enable_all_option'] : 0; if ( $sell_vehicle_option && class_exists( 'WooCommerce' ) ) { $stock = 1; } } } return (int) apply_filters( 'cardealer_get_vehicle_stock', $stock, $vehicle_id ); } /** * Get whether vehicle selling enabled. * * @param int|string $vehicle_id Vehicle ID. * @return bool */ function cardealer_is_vehicle_sell_enabled( $vehicle_id = '' ) { $enabled = false; if ( empty( $vehicle_id ) ) { $post = get_post(); if ( $post && 'cars' === $post->post_type ) { $vehicle_id = $post->ID; } } if ( ! empty( $vehicle_id ) ) { $sell_vehicle_status = get_post_meta( $vehicle_id, 'sell_vehicle_status', true ); if ( ! empty($sell_vehicle_status) ) { $enabled = ( 'enable' === $sell_vehicle_status ) ? true : false; } else { global $car_dealer_options; $sell_vehicle_option = ( isset( $car_dealer_options['sell_vehicle_enable_all_option'] ) ) ? $car_dealer_options['sell_vehicle_enable_all_option'] : 0; $enabled = ( $sell_vehicle_option && class_exists( 'WooCommerce' ) ) ? true : false; } } return apply_filters( 'cardealer_is_vehicle_sell_enabled', $enabled, $vehicle_id ); } /** * Get sell vehicle lable text. * * @return string */ function sell_vehicle_lable_text() { global $car_dealer_options; $lable_text = isset( $car_dealer_options['sell_vehicle_lable_text'] ) ? $car_dealer_options['sell_vehicle_lable_text'] : ''; $sell_vehicle_lable_text = ( ! empty( $lable_text ) ) ? $lable_text : esc_html__( 'Buy Online', 'cardealer' ); return apply_filters( 'sell_vehicle_lable_text', $sell_vehicle_lable_text ); } /** * Returns whether vehicle is sellable. * * @return bool */ function cardealer_is_vehicle_sellable( $vehicle_id = '' ) { global $car_dealer_options; $sellable = false; if ( ! class_exists( 'WooCommerce' ) ) { return false; } if ( empty( $vehicle_id ) ) { $post = get_post(); if ( $post && 'cars' === $post->post_type ) { $vehicle_id = $post->ID; } } $sell_vehicle_option = ( isset( $car_dealer_options['sell_vehicle_option'] ) ) ? $car_dealer_options['sell_vehicle_option'] : false; $sellable = ( $sell_vehicle_option ) ? true : false; if ( $sellable && cardealer_is_vehicle_sell_enabled( $vehicle_id ) && cardealer_get_vehicle_stock( $vehicle_id ) > 0 ) { $sellable = true; } else { $sellable = false; } return apply_filters( 'cardealer_is_vehicle_sellable', $sellable, $vehicle_id ); } if ( ! function_exists( 'cardealer_get_vehicle_review_stamps' ) ) { /** * Display vehicle review stamps * * @param string $id . * @param string $echo . */ function cardealer_get_vehicle_review_stamps( $id = null, $return = false ) { if ( null !== $id ) { $links_html = ''; $html = ''; $review_stamp_data = array(); global $car_dealer_options; $review_stamp_limit = isset( $car_dealer_options['review_stamp_limit'] ) ? $car_dealer_options['review_stamp_limit'] : 1; $review_stamp_popup = isset( $car_dealer_options['review_stamp_popup'] ) ? $car_dealer_options['review_stamp_popup'] : 'disable'; for ( $i = 1; $i <= $review_stamp_limit; $i++ ) { $review_stamp_logo_id = get_post_meta( $id, 'review_stamp_logo_' . $i, true ); $review_stamp_link = ''; $review_stamp_logo_url = ''; if ( ! empty( $review_stamp_logo_id ) ) { $review_stamp_logo_url = wp_get_attachment_url( $review_stamp_logo_id ); $review_stamp_link = get_post_meta( $id, 'review_stamp_link_' . $i, true ); } if ( ! empty( $review_stamp_logo_url ) ) { $review_stamp_data[] = array( 'img_url' => $review_stamp_logo_url, 'link' => $review_stamp_link, ); $popup_class = ''; if ( 'enable' === $review_stamp_popup ) { $popup_class = ' vehicle-review-stamp-popup'; } if ( '' !== $review_stamp_link ) { $links_html .= '<a class="vehicle-review-stamp-link' . esc_attr( $popup_class ) . '" href="' . esc_url( $review_stamp_link ) . '" target="_blank" data-elementor-open-lightbox="no">'; } $links_html .= '<img class="vehicle-review-stamp-img" src="' . esc_url( $review_stamp_logo_url ) . '" alt="carfax"/>'; if ( '' !== $review_stamp_link ) { $links_html .= '</a>'; } } } /** * Filters array of review stamps. * * @param array $review_stamp_data Array of review stamps. * @param int $id Vehicle ID. */ $review_stamp_data = apply_filters( 'cardealer_vehicle_review_stamp_data', $review_stamp_data, $id ); if ( $return ) { return $review_stamp_data; } else { /** * Filters the URL of the vehicle review stamps of the vehicle. * * @since 1.0 * @param string $link URL of the vehicle review stamps. * @param int $id Vehicle ID. * @param array $review_stamp_data Array of review stamps. * @Hooked cardealer_update_stamp_html 10 * @visible true */ $links_html = apply_filters( 'cardealer_vrs_link_html', $links_html, $id ); $links_html = apply_filters( 'cardealer_vehicle_review_stamps_links_html', $links_html, $id, $review_stamp_data ); if ( '' !== $links_html ) { $html .= '<div class="car-vehicle-review-stamps">'; $html .= $links_html; $html .= '</div>'; } /** * Filters the HTML structure of vehicle review stamps of vehicle. * * @since 1.0 * @param string $html HTML structure of Vehicle Review Stamps. * @visible true */ $html = apply_filters( 'cardealer_get_vehicle_review_stamps', $html ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE echo apply_filters( 'cardealer_vehicle_review_stamps_html', $html ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } } } } if ( ! function_exists( 'cardealer_get_cars_list_attribute' ) ) { /** * Display cars few features list in card catalog view on hover overlay */ function cardealer_get_cars_list_attribute() { global $post, $car_dealer_options; $list_style = cardealer_get_inv_list_style(); if ( 'classic' === $list_style ) { if ( isset( $car_dealer_options['inv-list-attributes'] ) && ! empty( $car_dealer_options['inv-list-attributes'] ) ) { $car_taxonomys = $car_dealer_options['inv-list-attributes']; } else { $car_taxonomys = array( 'car_year', 'car_make', 'car_model', 'car_body_style', 'car_transmission' ); } /** * Filters the list of attributes to be displayed in list view layout of inventory page. * * @since 1.0 * @param array $car_taxonomys Array of attributes to be displayed in list view layout. * @visible true */ $taxonomys = apply_filters( 'cardealer_vehicle_list_attr_contents', $car_taxonomys ); if ( empty( $taxonomys ) ) { return; } $taxonomies_obj = get_object_taxonomies( 'cars', 'object' ); $getlayout = cardealer_get_cars_list_layout_style(); $listing_sidebar = isset( $car_dealer_options['listing_sidebar'] ) ? $car_dealer_options['listing_sidebar'] : 'left'; $desktop_filter_location = isset( $car_dealer_options['vehicle_listing_desktop_filter_location'] ) ? $car_dealer_options['vehicle_listing_desktop_filter_location'] : 'inline'; ob_start(); ?> <div class="vehicle-attributes-list"> <?php if ( ( 'view-list' === $getlayout ) && ( 'no' === $listing_sidebar || 'off-canvas' === $desktop_filter_location ) ) { $size = ceil( count( $taxonomys ) / 2 ); $parsed_attrs = array_chunk( $taxonomys, $size, true ); foreach ( $parsed_attrs as $taxonomys ) { if ( empty( $taxonomys ) ) { continue; } ?> <ul class="vehicle-attributes"> <?php foreach ( $taxonomys as $tax ) { $attr = get_the_terms( $post->ID, $tax ); if ( ! is_wp_error( $attr ) && ! empty( $attr ) && isset( $attr[0]->name ) ) { ?> <li class="row"> <span class="col-xs-6"><?php echo ucwords( esc_html( $taxonomies_obj[ $tax ]->labels->name ) ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE ?></span> <?php if ( 'car_mileage' === $tax ) { ?> <strong class="col-xs-6"><?php echo ucwords( esc_html( cardealer_get_cars_formated_mileage( $attr[0]->name ) ) ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE ?></strong> <?php } else { ?> <strong class="col-xs-6"><?php echo ucwords( esc_html( $attr[0]->name ) ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE ?></strong> <?php } ?> </li> <?php } } ?> </ul> <?php } } else { ?> <ul class="list-inline"> <?php foreach ( $taxonomys as $tax ) { $attr = get_the_terms( $post->ID, $tax ); if ( ! is_wp_error( $attr ) && ! empty( $attr ) && isset( $attr[0]->name ) ) { ?> <li class="row"> <span class="col-xs-6"><?php echo ucwords( esc_html( $taxonomies_obj[ $tax ]->labels->singular_name ) ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE ?></span> <?php if ( 'car_mileage' === $tax ) { ?> <strong class="col-xs-6"><?php echo ucwords( esc_html( cardealer_get_cars_formated_mileage( $attr[0]->name ) ) ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE ?></strong> <?php } else { ?> <strong class="col-xs-6"><?php echo ucwords( esc_html( $attr[0]->name ) ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE ?></strong> <?php } ?> </li> <?php } } ?> </ul> <?php } ?> </div> <?php $attributs = ob_get_clean(); echo apply_filters( 'cardealer_get_cars_list_attribute', $attributs ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } else { $year = get_the_terms( $post->ID, 'car_year' ); $transmission = get_the_terms( $post->ID, 'car_transmission' ); $mileage = get_the_terms( $post->ID, 'car_mileage' ); if ( empty( $year ) && empty( $transmission ) && empty( $mileage ) ) { return; } $car_year = ''; $car_transmission = ''; $car_mileage = ''; if ( ! is_wp_error( $year ) && isset( $year[0]->name ) ) { $car_year = $year[0]->name; } if ( ! is_wp_error( $year ) && isset( $transmission[0]->name ) ) { $car_transmission = $transmission[0]->name; } if ( ! is_wp_error( $year ) && isset( $mileage[0]->name ) ) { $car_mileage = $mileage[0]->name; } $cars_grid = cardealer_get_cars_catlog_style(); $type = ''; $trn_cls = ' class="car-transmission-dots" '; if ( '' !== $cars_grid && 'yes' !== $cars_grid ) { $trn_cls = ' '; } $attributs_html = '<div class="car-list"><ul class="list-inline">'; if ( ! empty( $car_year ) ) { $attributs_html .= '<li><i class="fas fa-calendar-alt"></i> ' . esc_html( $car_year ) . '</li>'; } if ( ! empty( $car_transmission ) ) { $car_transmission_full = $car_transmission; $car_transmission = strlen( $car_transmission ) > 5 ? substr( $car_transmission, 0, 5 )."..." : $car_transmission; $car_transmission = empty( esc_html( $car_transmission ) ) ? $car_transmission_full : $car_transmission; $attributs_html .= '<li' . $trn_cls . 'title="' . esc_html( $car_transmission ) . '"><i class="fas fa-cog"></i> ' . esc_html( $car_transmission ) . '</li>'; } if ( $car_mileage ) { $attributs_html .= '<li><i class="glyph-icon flaticon-gas-station"></i> ' . esc_html( cardealer_get_cars_formated_mileage( $car_mileage ) ) . '</li>'; } $attributs_html .= '</ul></div>'; /** * Filters the HTML contents which displays vehicle attributes in inventory page. * * @since 1.0 * @param string $attributs_html HTML contents which displays vehicle attributes in inventory page. * @param $year WP_Term[]|false|WP_Error Array of year WP_Term objects. * @param $transmission WP_Term[]|false|WP_Error Array of transmission WP_Term objects. * @param $mileage WP_Term[]|false|WP_Error Array of mileage WP_Term objects. * @visible true */ echo apply_filters( 'cardealer_get_cars_list_attribute', $attributs_html, $year, $transmission, $mileage ); // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } } } if ( ! function_exists( 'cardealer_cars_filter_methods' ) ) { /** * Check filter with ajax or get method */ function cardealer_cars_filter_methods() { global $car_dealer_options; $cars_filter_with = ''; if ( isset( $car_dealer_options['cars-filter-with'] ) ) { $cars_filter_with = $car_dealer_options['cars-filter-with']; } return apply_filters( 'cardealer_cars_filter_methods', $cars_filter_with ); } } if ( ! function_exists( 'cardealer_get_cars_currency_symbol' ) ) { /** * Get currenc currency symbol */ function cardealer_get_cars_currency_symbol() { global $car_dealer_options; $currency_symbol = ''; if ( function_exists( 'cdhl_get_currency_symbols' ) ) { $currency_code = isset( $car_dealer_options['cars-currency-symbol'] ) ? $car_dealer_options['cars-currency-symbol'] : ''; $currency_symbol = cdhl_get_currency_symbols( $currency_code ); } else { $currency_code = isset( $car_dealer_options['cars-currency-symbol'] ) ? $car_dealer_options['cars-currency-symbol'] : ''; $currency_symbol = $currency_code; } return $currency_symbol; } } if ( ! function_exists( 'cardealer_get_cars_currency_placement' ) ) { /** * Get currenc currency placement */ function cardealer_get_cars_currency_placement() { global $car_dealer_options; $currency_placement = isset( $car_dealer_options['cars-currency-symbol-placement'] ) ? $car_dealer_options['cars-currency-symbol-placement'] : ''; $placement = 'right'; switch ( $currency_placement ) { case 1: $placement = 'left'; break; case 3: $placement = 'left-with-space'; break; case 4: $placement = 'right-with-space'; break; default: $placement = 'right'; } return $placement; } } if ( ! function_exists( 'cardealer_is_request_price_enable' ) ) { /** * Check if request_price enabled. * * @param int $id . */ function cardealer_is_request_price_enable( $id = null ) { global $car_dealer_options; $req_price_form_status = false; if ( ! $id ) { $id = get_the_ID(); } if ( isset( $car_dealer_options['req_price_form_status'] ) && $car_dealer_options['req_price_form_status'] ) { $req_price_form_status = true; } if ( get_post_meta( $id, 'enable_request_price', true ) ) { $req_price_form_status = true; } if ( ! isset( $car_dealer_options['req_price_form_shortcode'] ) || ( isset( $car_dealer_options['req_price_form_shortcode'] ) && ! $car_dealer_options['req_price_form_shortcode'] ) ) { $req_price_form_status = false; } return $req_price_form_status; } } if ( ! function_exists( 'cardealer_car_price_html' ) ) { /** * CAR Price formating * * @param string $class . * @param string $id . * @param string $tax_label . * @param string $echo . */ function cardealer_car_price_html( $class = '', $id = null, $tax_label = true, $echo = true, $is_page_price = false ) { global $car_dealer_options, $post; $car_id = ( isset( $id ) && null !== $id ) ? $id : $post->ID; if ( cardealer_is_request_price_enable( $car_id ) ) { $btn_label = cardealer_get_theme_option( 'req_price_btn_label', esc_html__( 'Request Price', 'cardealer' ) ); $enable_request_price = get_post_meta( $car_id, 'enable_request_price', true ); $request_price_label = get_post_meta( $car_id, 'request_price_label', true ); if ( $request_price_label && $enable_request_price ) { $btn_label = $request_price_label; } $args = array( 'car_id' => $car_id, 'is_page_price' => $is_page_price, 'btn_label' => $btn_label, ); if ( $echo ) { get_template_part( 'template-parts/cars/single-car/forms/req-price-form', null, $args ); } else { ob_start(); get_template_part( 'template-parts/cars/single-car/forms/req-price-form', null, $args ); $price_html = ob_get_clean(); return $price_html; } } else { $class_array = ( ! empty($class) ) ? explode( ' ', $class ) : array(); $currency_code = ( isset( $car_dealer_options['cars-currency-symbol'] ) && ! empty( $car_dealer_options['cars-currency-symbol'] ) ) ? $car_dealer_options['cars-currency-symbol'] : ''; if ( function_exists( 'cdhl_get_currency_symbols' ) ) { $currency_symbol = cdhl_get_currency_symbols( $currency_code ); } else { $currency_symbol = '$'; } $is_single = is_single(); $symbol_position = ( isset( $car_dealer_options['cars-currency-symbol-placement'] ) && ! empty( $car_dealer_options['cars-currency-symbol-placement'] ) ) ? $car_dealer_options['cars-currency-symbol-placement'] : ''; $seperator = ( isset( $car_dealer_options['cars-disable-currency-separators'] ) && ! empty( $car_dealer_options['cars-disable-currency-separators'] ) ) ? $car_dealer_options['cars-disable-currency-separators'] : ''; $seperator_symbol = ( isset( $car_dealer_options['cars-thousand-separator'] ) && ! empty( $car_dealer_options['cars-thousand-separator'] ) ) ? $car_dealer_options['cars-thousand-separator'] : ''; $decimal_separator_symbol = ( isset( $car_dealer_options['cars-decimal-separator'] ) && ! empty( $car_dealer_options['cars-decimal-separator'] ) ) ? $car_dealer_options['cars-decimal-separator'] : '.'; $decimal_places = ( ! empty( $car_dealer_options['cars-number-decimals'] ) && is_numeric( $car_dealer_options['cars-number-decimals'] ) ) ? $car_dealer_options['cars-number-decimals'] : 0; $price_html = ''; $space = ''; $regular_price = 0; $sale_price = 0; $regular_price = function_exists( 'get_field' ) ? get_field( 'regular_price', $car_id ) : get_post_meta( $car_id, 'regular_price', true ); $sale_price = function_exists( 'get_field' ) ? get_field( 'sale_price', $car_id ) : get_post_meta( $car_id, 'sale_price', true ); $regular_price = floatval( $regular_price ); $sale_price = floatval( $sale_price ); $decimal_places = (int) $decimal_places; if ( ( $regular_price > 0 ) || ( $sale_price > 0 ) ) { $price_html .= '<div class="price car-price ' . esc_attr( $class ) . '">'; if ( 3 === (int) $symbol_position || 4 === (int) $symbol_position ) { $space = ' '; } $currency_class = 'currency currency-' . $currency_code; if ( ! empty( $regular_price ) && ( $regular_price > 0 ) ) { $regular_price = ( isset( $seperator ) && 1 === (int) $seperator ) ? number_format( $regular_price, $decimal_places, $decimal_separator_symbol, $seperator_symbol ) : get_post_meta( $car_id, 'regular_price', true ); if ( $sale_price > 0 ) { $price_html .= ( 1 === (int) $symbol_position || 3 === (int) $symbol_position ) ? '<bdi class="old-price"><span class="' . esc_attr( $currency_class ).'">' . $currency_symbol . '</span>' . $space . esc_html( $regular_price ) . '</bdi>' : '<bdi class="old-price"> ' . esc_html( $regular_price ) . '<span class="' . esc_attr( $currency_class ).'">' . $space . $currency_symbol . '</span></bdi>'; } else { $price_html .= ( 1 === (int) $symbol_position || 3 === (int) $symbol_position ) ? '<bdi class="new-price"><span class="' . esc_attr( $currency_class ).'">' . $currency_symbol . '</span>' . $space . esc_html( $regular_price ) . '</bdi>' : '<bdi class="new-price"> ' . esc_html( $regular_price ) . '<span class="' . esc_attr( $currency_class ).'">' . $space . $currency_symbol . '</span></bdi>'; } } if ( $sale_price > 0 ) { $sale_price = ( isset( $seperator ) && 1 === (int) $seperator ) ? number_format( $sale_price, $decimal_places, $decimal_separator_symbol, $seperator_symbol ) : get_post_meta( $car_id, 'sale_price', true ); $price_html .= ( 1 === (int) $symbol_position || 3 === (int) $symbol_position ) ? '<bdi class="new-price"><span class="' . esc_attr( $currency_class ).'">' . $currency_symbol . '</span>' . $space . esc_html( $sale_price ) . '</bdi>' : '<bdi class="new-price"> ' . esc_html( $sale_price ) . '<span class="' . esc_attr( $currency_class ).'">' . $space . $currency_symbol . '</span></bdi>'; } if ( $is_single ) { if ( did_action( 'elementor/loaded' ) ) { if ( ! \Elementor\Plugin::$instance->editor->is_edit_mode() && ! in_array( 'hide-status', $class_array ) && ! in_array( 'related-slider', $class_array ) ) { $price_html .= cardealer_get_cars_status( $car_id ); } } else { if ( ! in_array( 'hide-status', $class_array ) && ! in_array( 'related-slider', $class_array ) ) { $price_html .= cardealer_get_cars_status( $car_id ); } } } if ( true === $tax_label ) { $tax_label_content = get_post_meta( $car_id, 'tax_label', true ); if ( ! empty( $tax_label_content ) ) { $price_html .= '<p>' . get_post_meta( $car_id, 'tax_label', true ) . '</p>'; } } $price_html .= '</div>'; $is_vehicle_sellable = cardealer_is_vehicle_sellable( $car_id ); if ( $is_vehicle_sellable && ( ! $is_single || in_array( 'related-slider', $class_array) ) && ! in_array( 'hide-sell', $class_array ) ) { $is_iframe = cardealer_is_iframe(); $lable_text = sell_vehicle_lable_text(); if ( $is_iframe ) { $price_html .= '<div class="vehicle-button-link car-buy-online-btn car-buy-online-btn-iframe" data-vehicle_id="' . esc_attr( $car_id ) . '">'; } else { $price_html .= '<div class="vehicle-button-link vehicle-button-link-type-js_event car-buy-online-btn" data-btn_type="js_event" data-event="cardealer-vehicle-button-buy-online" data-vehicle_id="' . esc_attr( $car_id ) . '">'; } $price_html .= '<span class="car-buy-online-label">'; $price_html .= esc_html( $lable_text ); $price_html .= '</span>'; $price_html .= '</div>'; } } // options to add in filter. $options = array( 'class' => ( ! empty($class_array) ) ? implode( ' ', $class_array ) : '', 'id' => $car_id, 'tax_label' => $tax_label, 'currency_symbol' => $currency_symbol, 'symbol_position' => $symbol_position, 'seperator' => $seperator, 'thousand_seperator_symbol' => $seperator_symbol, 'decimal_separator_symbol' => $decimal_separator_symbol, 'decimal_places' => $decimal_places, 'currency_code' => $currency_code, ); /** * Filters the HTML layout of the vehicle price. * * @since 1.0 * * @param string $price_html HTML layout of the vehicle price. * @param array $options Array of price elements used to build price HTML. * @visible true */ $price_html = apply_filters( 'cardealer_vehicle_price_html_body', $price_html, $options ); /** * Filters the HTML layout of the vehicle price. * * @since 1.0 * * @param string $price_html HTML layout of the vehicle price. * @param int $car_id Vehicle ID. * @visible true */ $price_html = apply_filters( 'cardealer_car_price_html', $price_html, $car_id ); if ( $echo ) { echo wp_kses( $price_html, array( 'div' => array( 'class' => true, 'data-btn_type' => true, 'data-vehicle_id' => true, 'data-event' => true, ), 'p' => array(), 'bdi' => array( 'class' => true, ), 'span' => array( 'class' => true, ), ) ); } else { return $price_html; } } } } if ( ! function_exists( 'cardealer_get_car_price' ) ) { /** * CAR Price formating with retur value * * @param string $class . * @param string $id . */ function cardealer_get_car_price( $class = '', $id = null ) { global $car_dealer_options, $post; $currency_code = isset( $car_dealer_options['cars-currency-symbol'] ) ? $car_dealer_options['cars-currency-symbol'] : ''; $currency_symbol = cdhl_get_currency_symbols( $currency_code ); $price_html = '<div class="price car-price ' . $class . '">'; $regular_price = 0; $sale_price = 0; $car_id = ( isset( $id ) && null !== $id ) ? $id : $post->ID; $regular_price = get_post_meta( $car_id, 'regular_price', true ); $regular_price = floatval( $regular_price ); $sale_price = get_post_meta( $car_id, 'sale_price', true ); $sale_price = floatval( $sale_price ); if ( $regular_price > 0 && $sale_price > 0 ) { $price_html .= '<span class="old-price"> ' . esc_html( $currency_symbol . $regular_price ) . '</span>'; $price_html .= '<span class="new-price"> ' . esc_html( $currency_symbol . $sale_price ) . '</span>'; } elseif ( 0 === $regular_price || empty( $regular_price ) && $sale_price > 0 ) { $price_html .= '<span class="new-price"> ' . esc_html( $currency_symbol . $sale_price ) . '</span>'; } elseif ( 0 === $sale_price || empty( $sale_price ) && $regular_price > 0 ) { $price_html .= '<span class="new-price"> ' . esc_html( $currency_symbol . $regular_price ) . '</span>'; } else { $price_html .= '<span class="new-price"> ' . esc_html( $currency_symbol ) . '0.00</span>'; } $price_html .= '</div>'; return $price_html; } } if ( ! function_exists( 'cardealer_get_car_price_array' ) ) { /** * CAR Price array * * @param string $id . */ function cardealer_get_car_price_array( $id = null ) { global $car_dealer_options, $post; $currency_symbol = cardealer_get_cars_currency_symbol(); $currency_placement = cardealer_get_cars_currency_placement(); $display_seperator = ( isset( $car_dealer_options['cars-disable-currency-separators'] ) && ! empty( $car_dealer_options['cars-disable-currency-separators'] ) ) ? $car_dealer_options['cars-disable-currency-separators'] : '1'; $thousand_seperator = ( isset( $car_dealer_options['cars-thousand-separator'] ) && ! empty( $car_dealer_options['cars-thousand-separator'] ) ) ? $car_dealer_options['cars-thousand-separator'] : ','; $decimal_symbol = ( isset( $car_dealer_options['cars-decimal-separator'] ) && ! empty( $car_dealer_options['cars-decimal-separator'] ) ) ? $car_dealer_options['cars-decimal-separator'] : '.'; $decimal_places = ( ! empty( $car_dealer_options['cars-number-decimals'] ) && is_numeric( $car_dealer_options['cars-number-decimals'] ) ) ? $car_dealer_options['cars-number-decimals'] : 2; $price_arr = array( 'currency_symbol' => $currency_symbol, 'currency_placement' => $currency_placement, 'display_seperator' => filter_var( $display_seperator, FILTER_VALIDATE_BOOLEAN ), 'thousand_seperator' => $thousand_seperator, 'decimal_symbol' => $decimal_symbol, 'decimal_places' => $decimal_places, ); $regular_price = 0; $sale_price = 0; $car_id = ( isset( $id ) && null !== $id ) ? $id : $post->ID; $regular_price = get_post_meta( $car_id, 'regular_price', true ); $regular_price = (int) $regular_price; $sale_price = get_post_meta( $car_id, 'sale_price', true ); $sale_price = (int) $sale_price; if ( $regular_price > 0 && $sale_price > 0 ) { $price_arr['regular_price'] = $regular_price; $price_arr['sale_price'] = $sale_price; } elseif ( 0 === $regular_price || empty( $regular_price ) && $sale_price > 0 ) { $price_arr['regular_price'] = 0; $price_arr['sale_price'] = $sale_price; } elseif ( 0 === $sale_price || empty( $sale_price ) && $regular_price > 0 ) { $price_arr['regular_price'] = $regular_price; $price_arr['sale_price'] = 0; } else { $price_arr['regular_price'] = 0; $price_arr['sale_price'] = 0; } $price_arr = apply_filters( 'cardealer_get_car_price_array', $price_arr, $car_id ); return $price_arr; } } if ( ! function_exists( 'cardealer_template_chooser' ) ) { /** * Set template on search cars in cars catalog page * * @param string $template . */ function cardealer_template_chooser( $template ) { global $wp_query, $car_dealer_options; if ( $wp_query->is_search && is_post_type_archive( 'cars' ) ) { return locate_template( 'archive-cars.php' ); // redirect to archive-search.php . } elseif ( is_post_type_archive( 'cars' ) || ( isset( $car_dealer_options['cars_inventory_page'] ) && '' !== $car_dealer_options['cars_inventory_page'] && is_page( $car_dealer_options['cars_inventory_page'] ) ) ) { // if cars post type and archive page. return locate_template( 'archive-cars.php' ); // redirect to archive-search.php . } return $template; } } add_filter( 'template_include', 'cardealer_template_chooser' ); if ( ! function_exists( 'cardealer_get_carplaceholder' ) ) { /** * Default cars placeholder image * * @param string $size . * @param string $return_type . */ function cardealer_get_carplaceholder( $size = '', $return_type = 'image' ) { global $car_dealer_options; $url = CDHL_URL; $url .= 'images/carplaceholder.jpg'; if ( '' !== $size ) { if ( 'car_thumbnail' === $size ) { $meta = 'width="190" height="138"'; } elseif ( 'car_catalog_image' === $size ) { if ( ( is_post_type_archive( 'cars' ) && ! wp_is_mobile() ) || ( isset( $_POST['action'] ) && 'cardealer_cars_filter_query' === $_POST['action'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification $getlayout = cardealer_get_cars_list_layout_style(); $col = cardealer_get_grid_column(); $listing_sidebar = isset( $car_dealer_options['listing_sidebar'] ) ? $car_dealer_options['listing_sidebar'] : 'left'; $desktop_filter_location = isset( $car_dealer_options['vehicle_listing_desktop_filter_location'] ) ? $car_dealer_options['vehicle_listing_desktop_filter_location'] : 'inline'; if ( ! empty( $getlayout ) ) { if ( 'view-list' === $getlayout ) { $col = 3; } else { if ( 'no' === $listing_sidebar || 'off-canvas' === $desktop_filter_location ) { $col = 3; } } } if ( 4 === $col ) { $meta = 'width="187" height="134"'; } else { $meta = 'width="265" height="190"'; } } else { $meta = 'width="265" height="190"'; } } elseif ( 'car_list_thumbnail' === $size ) { $meta = 'width="110" height="79"'; } elseif ( 'large' === $size || 'car_single_image' === $size ) { $meta = 'class="img-responsive"'; $meta = ''; } elseif ( 'car_tabs_image' === $size ) { $meta = 'class="img-responsive"'; $meta = ''; } elseif ( 'cardealer-50x50' === $size ) { $meta = 'width="50" height="50"'; } else { $meta = 'width="265" height="190"'; } } return ( ! empty( $return_type ) && 'image' === $return_type ) ? '<img src="' . esc_url( $url ) . '" class="img-responsive" ' . $meta . ' alt="carplaceholder"/>' : $url; } } if ( ! function_exists( 'cardealer_get_cars_status' ) ) { /** * Get cars status * * @param string $car_id . * @param string $echo . */ function cardealer_get_cars_status( $car_id = null, $echo = false ) { if ( ! $car_id ) { return false; } $html = ''; $car_status = ''; $car_status = get_post_meta( $car_id, 'car_status', true ); if ( ! empty( $car_status ) ) { if ( 'sold' === $car_status ) { $html = '<span class="label car-status ' . $car_status . '">' . esc_html__( 'SOLD', 'cardealer' ) . '</span>'; } } /** * Filters the HTML of the vehicle status(SOLD/UNSOLD). * * @since 1.0 * * @param string $html HTML of the vehicle status badge. * @param int $car_id Vehicle ID. * @visible true */ $html = apply_filters( 'cardealer_get_cars_status', $html, $car_id ); if ( $echo ) { echo wp_kses( $html, array( 'span' => array( 'class' => true, ), ) ); } else { return $html; } } } if ( ! function_exists( 'cardealer_get_cars_condition' ) ) { /** * Get cars condition * * @param string $id . * @param string $echo . */ function cardealer_get_cars_condition( $id = null, $echo = false ) { global $car_dealer_options; if ( ! $id || ( isset( $car_dealer_options['display-condition-tags'] ) && 'no' === $car_dealer_options['display-condition-tags'] ) ) { return false; } $html = ''; $args = array( 'orderby' => 'name', 'order' => 'ASC', 'fields' => 'all', ); $terms = wp_get_post_terms( $id, 'car_condition', $args ); if ( ! is_wp_error( $terms ) && isset( $terms ) && ! empty( $terms ) ) { $is_wpml = cardealer_is_wpml_active(); $term_name = $terms[0]->name; if ( $is_wpml ) { $lang_term_name = cardealer_get_term_for_default_lang( $terms[0]->term_id, 'car_condition' ); $term_name = $lang_term_name->name; } if ( preg_match( '(new|New)', $term_name ) === 1 ) { $class = 'new'; } elseif ( preg_match( '(used|Used)', $term_name ) === 1 ) { $class = 'used'; } elseif ( preg_match( '(certified|Certified)', $term_name ) === 1 ) { $class = 'certified'; } else { $class = $terms[0]->slug; } $color = get_term_meta( $terms[0]->term_id, 'label_color', true ); $html = '<span class="label car-condition ' . esc_attr( $class ) . '"'; if ( $color ) { $html .= ' style="background:' . esc_attr( $color ) . '"'; } $html .= ' >' . esc_html( $terms[0]->name ) . '</span>'; } /** * Filters the HTML of the vehicle condition tag. * * @since 1.0 * * @param string $html HTML of the vehicle condition tag. * @param int $id Vehicle ID. * @visible true */ $html = apply_filters( 'cardealer_get_cars_condition', $html, $id ); if ( $echo ) { echo wp_kses( $html, array( 'span' => array( 'class' => true, 'style' => true, ), ) ); } else { return $html; } } } if ( ! function_exists( 'cardealer_get_term_for_default_lang' ) ) { /** * Get default language terms object * * @param string $term . * @param string $taxonomy . */ function cardealer_get_term_for_default_lang( $term, $taxonomy ) { global $sitepress; global $icl_adjust_id_url_filter_off; $term_id = is_int( $term ) ? $term : $term->term_id; $default_term_id = (int) icl_object_id( $term_id, $taxonomy, true, $sitepress->get_default_language() ); $orig_flag_value = $icl_adjust_id_url_filter_off; $icl_adjust_id_url_filter_off = true; $term = get_term( $default_term_id, $taxonomy ); $icl_adjust_id_url_filter_off = $orig_flag_value; return $term; } } if ( ! function_exists( 'cardealer_is_wpml_active' ) ) { /** * Check if WPML is active * * @return bool */ function cardealer_is_wpml_active() { return ( class_exists( 'SitePress' ) ? true : false ); } } if ( ! function_exists( 'cardealer_get_cars_image' ) ) { /** * Get cars images * * @param string $car_size . * @param string $id . */ function cardealer_get_cars_image( $car_size = 'car_catalog_image', $id = null, $image_meta_key = "car_images" ) { $image_meta_key = apply_filters( 'cardealer_get_cars_image_meta_key', $image_meta_key ); if ( empty( $car_size ) ) { $car_size = 'car_catalog_image'; } global $post; $car_id = ( isset( $id ) && null !== $id ) ? $id : $post->ID; if ( function_exists( 'get_field' ) ) { $images = get_field( $image_meta_key, $car_id ); $images = apply_filters( 'cardealer_get_cars_image__car_images',$images, $car_id ); if ( ! empty( $images ) ) { if ( ( isset( $_POST['action'] ) && 'cardealer_load_more_vehicles' === $_POST['action'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification $img = '<img class="img-responsive" alt="' . esc_attr( $images[0]['alt'] ) . '" width="' . esc_attr( $images[0]['sizes'][ $car_size . '-width' ] ) . '" height="' . esc_attr( $images[0]['sizes'][ $car_size . '-height' ] ) . '" src="' . esc_url( $images[0]['sizes'][ $car_size ] ) . '"/>'; } elseif ( cardealer_lazyload_enabled() && isset( $images[0]['sizes'] ) && isset( $images[0]['alt'] ) ) { $img = '<img class="img-responsive cardealer-lazy-load" alt="' . esc_attr( $images[0]['alt'] ) . '" width="' . esc_attr( $images[0]['sizes'][ $car_size . '-width' ] ) . '" height="' . esc_attr( $images[0]['sizes'][ $car_size . '-height' ] ) . '" src="' . esc_url( LAZYLOAD_IMG ) . '" data-src="' . esc_url( $images[0]['sizes'][ $car_size ] ) . '"/>'; } else { if ( isset( $images[0]['sizes'] ) && isset( $images[0]['alt'] ) && isset( $images[0]['sizes'][ $car_size ] ) ) { $img = '<img class="img-responsive" src="' . esc_url( $images[0]['sizes'][ $car_size ] ) . '" alt="' . esc_attr( $images[0]['alt'] ) . '" width="' . esc_attr( $images[0]['sizes'][ $car_size . '-width' ] ) . '" height="' . esc_attr( $images[0]['sizes'][ $car_size . '-height' ] ) . '"/>'; } else { $img = cardealer_get_carplaceholder( $car_size ); } } } else { $img = cardealer_get_carplaceholder( $car_size ); } } else { $img = cardealer_get_carplaceholder( $car_size ); } return $img; } } if ( ! function_exists( 'cardealer_get_cars_owl_image' ) ) { /** * Get cars images for owl carousal * * @param string $car_size . * @param string $id . */ function cardealer_get_cars_owl_image( $car_size = 'car_catalog_image', $id = null ) { if ( empty( $car_size ) ) { $car_size = 'car_catalog_image'; } global $post; $car_id = ( isset( $id ) && null !== $id ) ? $id : $post->ID; if ( function_exists( 'get_field' ) ) { $images = get_field( 'car_images', $car_id ); if ( ! empty( $images ) ) { if ( ( isset( $_POST['action'] ) && 'cardealer_load_more_vehicles' === $_POST['action'] ) || cardealer_lazyload_enabled() ) { // phpcs:ignore WordPress.Security.NonceVerification $img = '<img class="img-responsive owl-lazy" alt="' . esc_attr( $images[0]['alt'] ) . '" width="' . esc_attr( $images[0]['sizes'][ $car_size . '-width' ] ) . '" height="' . esc_attr( $images[0]['sizes'][ $car_size . '-height' ] ) . '" src="' . esc_url( LAZYLOAD_IMG ) . '" data-src="' . esc_url( $images[0]['sizes'][ $car_size ] ) . '"/>'; } else { $img = '<img class="img-responsive" src="' . esc_url( $images[0]['sizes'][ $car_size ] ) . '" alt="' . esc_attr( $images[0]['alt'] ) . '" width="' . esc_attr( $images[0]['sizes'][ $car_size . '-width' ] ) . '" height="' . esc_attr( $images[0]['sizes'][ $car_size . '-height' ] ) . '"/>'; } } else { $img = cardealer_get_carplaceholder( $car_size ); } } else { $img = cardealer_get_carplaceholder( $car_size ); } return $img; } } if ( ! function_exists( 'cardealer_get_single_image_url' ) ) { /** * Single image url * * @param string $car_size . * @param string $id . */ function cardealer_get_single_image_url( $car_size = 'car_catalog_image', $id = null ) { global $post; $car_id = ''; $url = CARDEALER_URL . '/images/carplaceholder.jpg'; $img_path = CARDEALER_PATH . '/images/carplaceholder.jpg'; if ( function_exists( 'get_field' ) ) { if ( ! empty( $id ) ) { $car_id = $id; } elseif ( isset( $post ) ) { $car_id = $post->ID; } $car_images = get_field( 'car_images', $car_id ); if ( $car_images && is_array( $car_images ) && isset( $car_images[0]['url'] ) && ! empty( $car_images[0]['url'] ) ) { $url = $car_images[0]['url']; } } return $url; } } if ( ! function_exists( 'cardealer_get_images_url' ) ) { /** * Image url * * @param string $car_size . * @param string $id . */ function cardealer_get_images_url( $car_size = 'car_catalog_image', $id = null ) { global $post; $url = null; if ( function_exists( 'get_field' ) ) { if ( isset( $id ) && ! empty( $id ) ) { $car_id = $id; } elseif ( isset( $post ) ) { $car_id = $post->ID; } $car_images = get_field( 'car_images', $car_id ); $url = array(); if ( ! empty( $car_images ) ) { foreach ( $car_images as $car_image ) { $url[] = $car_image['url']; } } } return $url; } } if ( ! function_exists( 'cardealer_get_price_filters' ) ) : /** * Price filter */ function cardealer_get_price_filters( $args = array() ) { global $car_dealer_options, $cardealer_price_range_instance; $cardealer_price_range_instance = ( isset( $cardealer_price_range_instance ) ) ? $cardealer_price_range_instance + 1 : 1; $price_range_slider_id = "dealer-slider-amount-$cardealer_price_range_instance"; $price_slider_range_id = "slider-range-$cardealer_price_range_instance"; $pgs_min_price = isset( $_GET['min_price'] ) ? sanitize_text_field( wp_unslash( $_GET['min_price'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification $pgs_max_price = isset( $_GET['max_price'] ) ? sanitize_text_field( wp_unslash( $_GET['max_price'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification // Find min and max price in current result set. $prices = cardealer_get_car_filtered_price(); $min = floor( $prices->min_price ); $max = ceil( $prices->max_price ); if ( $min === $max ) { return; } // Range Slider Step. $step = 100; if ( isset( $car_dealer_options['price_range_step'] ) && ! empty( $car_dealer_options['price_range_step'] ) ) { $step = $car_dealer_options['price_range_step']; } $price_range_slider_args = array( 'pgs_min_price' => $pgs_min_price, 'pgs_max_price' => $pgs_max_price, 'min' => $min, 'max' => $max, 'step' => $step, 'price_range_slider_id' => $price_range_slider_id, 'price_slider_range_id' => $price_slider_range_id, 'price_range_instance' => $cardealer_price_range_instance, ); if ( isset( $args['filter_location'] ) && ! empty( $args['filter_location'] ) ) { $price_range_slider_args['filter_location'] = $args['filter_location']; } ob_start(); get_template_part( 'template-parts/cars/archive-sections/price-range-slider', null, $price_range_slider_args ); $html = ob_get_clean(); /** * Filters the vehicle price slider HTML layout. * * @since 1.0 * @param string $html HTML string of the vehicle price slider HTML layout. * @visible true */ $html = apply_filters( 'car_dealer_price_slider_html', $html ); echo wp_kses( $html, array( 'div' => array( 'class' => true, 'id' => true, ), 'input' => array( 'class' => true, 'type' => true, 'id' => true, 'name' => true, 'value' => true, 'data-min' => true, 'data-max' => true, 'data-step' => true, 'readonly' => true, ), 'label' => array( 'class' => true, 'for' => true, ), 'button' => array( 'class' => true, 'id' => true, ), ) ); } endif; if ( ! function_exists( 'cardealer_get_year_range_filters' ) ) : /** * Year rang filter * * @param string $cfb . */ function cardealer_get_year_range_filters( $cfb = '', $args = array() ) { global $cardealer_year_range_instance; $cardealer_year_range_instance = ( isset( $cardealer_year_range_instance ) ) ? $cardealer_year_range_instance + 1 : 1; $year_range_slider_id = "dealer-slider-year-range-$cardealer_year_range_instance"; $year_slider_range_id = "slider-year-range-$cardealer_year_range_instance"; $pgs_year_range_min = isset( $_GET['min_year'] ) ? sanitize_text_field( wp_unslash( $_GET['min_year'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification $pgs_year_range_max = isset( $_GET['max_year'] ) ? sanitize_text_field( wp_unslash( $_GET['max_year'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification // Find min and max price in current result set. $year_range = ( function_exists( 'cardealer_get_year_range' ) ) ? cardealer_get_year_range() : ''; if ( empty( $year_range ) ) { return; } $yearmin = floor( (int) $year_range['min_year'] ); $yearmax = ceil( (int) $year_range['max_year'] ); if ( $yearmin === $yearmax ) { return; } $location = ( isset( $args['location'] ) && ! empty( $args['location'] ) ) ? $args['location'] : '-'; ob_start(); ?> <div class="year-range-slider-wrapper" data-range-location="<?php echo esc_attr( $location ); ?>"> <div class="year-range-slide"> <div class="year_range"> <input type="hidden" class="pgs-year-range-min" name="min_year" value="<?php echo esc_attr( $pgs_year_range_min ); ?>" data-yearmin="<?php echo esc_attr( $yearmin ); ?>" /> <input type="hidden" class="pgs-year-range-max" name="max_year" value="<?php echo esc_attr( $pgs_year_range_max ); ?>" data-yearmax="<?php echo esc_attr( $yearmax ); ?>" /> <?php if ( 'filters' === $location ) { ?> <div id="<?php echo esc_attr( $year_slider_range_id ); ?>" class="slider-year-range range-slide-slider" data-cfb="<?php echo esc_attr( $cfb ); ?>"></div> <?php } ?> <div class="range-btn-wrapper year-range-btn-wrapper"> <div class="year-range-slider-value-wrapper range-slider-value-wrapper"> <label for="<?php echo esc_attr( $year_range_slider_id ); ?>"><?php echo esc_html__( 'Year:', 'cardealer' ); ?></label> <input type="text" id="<?php echo esc_attr( $year_range_slider_id ); ?>" class="dealer-slider-year-range" readonly="" value="" /> </div> </div> <?php if ( 'filters' !== $location ) { ?> <div id="<?php echo esc_attr( $year_slider_range_id ); ?>" class="slider-year-range range-slide-slider" data-cfb="<?php echo esc_attr( $cfb ); ?>"></div> <?php } ?> </div> </div> </div> <?php $html = ob_get_clean(); return apply_filters( 'cardealer_year_range_filters', $html ); } endif; if ( ! function_exists( 'cardealer_is_year_range_active' ) ) : /** * Check year rang slider is active for listing page */ function cardealer_is_year_range_active() { global $car_dealer_options; $year_range_active = true; $cars_year_range_slider = ( isset( $car_dealer_options['cars-year-range-slider'] ) && ! empty( $car_dealer_options['cars-year-range-slider'] ) ) ? $car_dealer_options['cars-year-range-slider'] : 'no'; if ( 'no' === $cars_year_range_slider ) { $year_range_active = false; } return $year_range_active; } endif; if ( ! function_exists( 'cardealer_get_year_range_slider_location' ) ) : /** * get year range slider location. */ function cardealer_get_year_range_slider_location() { global $car_dealer_options; $key = 'cars_year_range_slider_location'; $locations = array( 'in_filters', 'in_widgets', ); $location = ( isset( $car_dealer_options[ $key ] ) && ! empty( $car_dealer_options[ $key ] ) && in_array( $car_dealer_options[ $key ], $locations, true ) ) ? $car_dealer_options[ $key ] : 'in_filters'; return $location; } endif; if ( ! function_exists( 'cardealer_get_car_filtered_price' ) ) { /** * Get filtered min price for current list. * * @return int */ function cardealer_get_car_filtered_price() { global $wpdb, $car_dealer_options; // @codingStandardsIgnoreStart // Current site prefix. $end_condition = ''; $tbprefix = $wpdb->prefix; $sql = 'SELECT '; $sql .= ' min( FLOOR( price_meta.meta_value ) ) as min_price,'; $sql .= ' max( CEILING( price_meta.meta_value ) ) as max_price'; $sql .= ' FROM ' . $tbprefix . 'posts'; $sql .= ' LEFT JOIN ' . $tbprefix . 'postmeta as price_meta ON ' . $tbprefix . 'posts.ID = price_meta.post_id'; if ( is_tax( 'vehicle_cat' ) ) { global $wp_query; $term_id = get_term_by( 'slug', $wp_query->query_vars['vehicle_cat'], 'vehicle_cat' ); $end_condition = ' AND ' . $tbprefix . 'term_relationships.term_taxonomy_id=' . $term_id->term_taxonomy_id; $sql .= ' LEFT JOIN ' . $tbprefix . 'term_relationships ON (' . $tbprefix . 'posts.ID = ' . $tbprefix . 'term_relationships.object_id)'; } $sql .= ' INNER JOIN ' . $tbprefix . 'postmeta ON (' . $tbprefix . 'posts.ID = ' . $tbprefix . 'postmeta.post_id )'; $sql .= ' WHERE ' . $tbprefix . "posts.post_type IN ('cars')"; $sql .= ' AND ' . $tbprefix . "posts.post_status = 'publish'"; $sql .= " AND price_meta.meta_key IN ('final_price')$end_condition"; if ( isset( $car_dealer_options['car_no_sold'] ) && 0 === (int) $car_dealer_options['car_no_sold'] ) { $sql .= ' AND ( ( ' . $tbprefix . "postmeta.meta_key = 'car_status' AND " . $tbprefix . "postmeta.meta_value != 'sold' ) )"; } $price_arr = $wpdb->get_row( $sql ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared // code for price step theme option. if ( isset( $car_dealer_options['price_range_step'] ) && ! empty( $car_dealer_options['price_range_step'] ) ) { $min_difference = $car_dealer_options['price_range_step'] - ( $price_arr->min_price % $car_dealer_options['price_range_step'] ); $price_arr->min_price += $min_difference - $car_dealer_options['price_range_step']; // Round up min price. $max_difference = $car_dealer_options['price_range_step'] - ( $price_arr->max_price % $car_dealer_options['price_range_step'] ); $price_arr->max_price += $max_difference; // Round up max price. } return apply_filters( 'cd_vehicle_filtered_price', $price_arr ); // @codingStandardsIgnoreEnd } } if ( ! function_exists( 'cardealer_get_year_range' ) ) { /** * Get filtered year range. * * @return int */ function cardealer_get_year_range() { global $wpdb; $terms = get_terms( array( 'taxonomy' => 'car_year', 'hide_empty' => true, 'order' => 'ASC', ) ); $taxonomy_name = get_taxonomy( 'car_year' ); $data = array(); if ( ! empty( $taxonomy_name ) ) { $slug = $taxonomy_name->rewrite['slug']; $label = $taxonomy_name->labels->menu_name; if ( ! empty( $terms ) ) { $year_arr = array(); foreach ( $terms as $tdata ) { $year_arr[] = $tdata->slug; } $first = reset( $year_arr ); $last = end( $year_arr ); $data = array( 'min_year' => $first, 'max_year' => $last, ); } } /** * Filters the year range to be used in inventory filter. * * @since 1.0 * @param array $data Year range array - minimum year and maximum year. * @hooked cardealer_list_layout_style_lazyload - 10 * @visible true */ return apply_filters( 'cardealer_year_range', $data ); } } if ( ! function_exists( 'cardealer_get_show_hide_list_layout_style' ) ) { /** * Show Hide list layout style */ function cardealer_get_show_hide_list_layout_style() { $getlayout = array( 'view-grid', 'view-masonry', 'view-list', ); /** * Filters the layout style option for inventory listing(grid/list). * * @since 1.0 * @param string $getlayout Layout style selected for vehicle listing. * @hooked cardealer_get_show_hide_list_layout_style - 10 * @visible true */ return apply_filters( 'cardealer_get_show_hide_list_layout_style', $getlayout ); } } if ( ! function_exists( 'cardealer_get_cars_list_layout_style' ) ) { /** * Add layout style in cookie */ function cardealer_get_cars_list_layout_style() { global $car_dealer_options; // @codingStandardsIgnoreStart $getlayout = ( isset( $car_dealer_options['listing-layout'] ) && ! empty( $car_dealer_options['listing-layout'] ) ) ? $car_dealer_options['listing-layout'] : 'view-grid'; if ( isset( $_REQUEST['lay_style'] ) && ! empty( $_REQUEST['lay_style'] ) ) { $getlayout = $_REQUEST['lay_style']; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized } elseif ( isset( $_COOKIE['lay_style'] ) && ! empty( $_COOKIE['lay_style'] ) ) { $getlayout = $_COOKIE['lay_style']; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized } // @codingStandardsIgnoreEnd if ( ! in_array( $getlayout, array( 'view-grid', 'view-masonry', 'view-list' ) ) ) { $getlayout = 'view-grid'; } /** * Filters the layout style option for inventory listing(grid/list). * * @since 1.0 * @param string $getlayout Layout style selected for vehicle listing. * @hooked cardealer_list_layout_style_lazyload - 10 * @visible true */ return apply_filters( 'cardealer_list_layout_style', $getlayout ); } } if ( ! function_exists( 'cardealer_get_cars_catlog_style' ) ) { /** * Catalog style */ function cardealer_get_cars_catlog_style() { $getlayout = cardealer_get_cars_list_layout_style(); $return = 'yes'; if ( $getlayout ) { switch ( $getlayout ) { case 'view-grid': case 'view-masonry': $return = 'yes'; break; case 'view-list': $return = 'no'; break; } } return $return; } } if ( ! function_exists( 'cardealer_get_default_sort_by' ) ) { /** * Get default listing sort by dropdown option value */ function cardealer_get_default_sort_by() { global $car_dealer_options; $cars_orderby = ''; if ( isset( $car_dealer_options['cars-default-sort-by'] ) ) { $cars_orderby = $car_dealer_options['cars-default-sort-by']; } return $cars_orderby; } } if ( ! function_exists( 'cardealer_get_default_sort_by_order' ) ) { /** * Get default listing order by value */ function cardealer_get_default_sort_by_order() { global $car_dealer_options; $cars_order = 'desc'; if ( isset( $car_dealer_options['cars-default-sort-by-order'] ) ) { $cars_order = $car_dealer_options['cars-default-sort-by-order']; } return $cars_order; } } if ( ! function_exists( 'cardealer_get_vehicle_listing_page_layout' ) ) { /** * Vehicle listing layout style * * @param string $extra_classes . */ function cardealer_get_vehicle_listing_page_layout() { global $car_dealer_options; $layout = ( isset( $car_dealer_options['vehicle-listing-layout'] ) && ! empty( $car_dealer_options['vehicle-listing-layout'] ) ) ? $car_dealer_options['vehicle-listing-layout'] : 'default'; return apply_filters( 'cardealer_get_vehicle_listing_page_layout', $layout ); } } if ( ! function_exists( 'cardealer_cars_content_class' ) ) { /** * Cars content class * * @param string $extra_classes . */ function cardealer_cars_content_class( $extra_classes = '' ) { global $car_dealer_options; $listing_layout = cardealer_get_vehicle_listing_page_layout(); $listing_sidebar = isset( $car_dealer_options['listing_sidebar'] ) ? $car_dealer_options['listing_sidebar'] : 'left'; $desktop_filter_location = isset( $car_dealer_options['vehicle_listing_desktop_filter_location'] ) ? $car_dealer_options['vehicle_listing_desktop_filter_location'] : 'inline'; if ( 'default' === $listing_layout ) { if ( 'off-canvas' === $desktop_filter_location || 'no' === $listing_sidebar || ! is_active_sidebar( 'listing-cars' ) ) { $content_class = 12; } else { $content_class = 9; } } else { $content_class = 9; } $classes = array( 'content' ); $classes[] = 'col-lg-' . $content_class . ' col-md-' . $content_class . ' col-sm-12'; if ( ! empty( $extra_classes ) ) { $classes[] = $extra_classes; } echo 'class="' . join( ' ', $classes ) . '"'; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } } if ( ! function_exists( 'cardealer_get_grid_column' ) ) { /** * Grid column */ function cardealer_get_grid_column() { global $car_dealer_options, $sold_vehicle_pg; $col = 3; $classes = array(); $getlayout = ''; $listing_layout = cardealer_get_vehicle_listing_page_layout(); if ( 'lazyload' === $listing_layout && true !== $sold_vehicle_pg ) { $col = 5; } else { if ( isset( $car_dealer_options['cars-col-sel'] ) && ! empty( $car_dealer_options['cars-col-sel'] ) ) { $col = $car_dealer_options['cars-col-sel']; } $listing_sidebar = isset( $car_dealer_options['listing_sidebar'] ) ? $car_dealer_options['listing_sidebar'] : 'left'; $desktop_filter_location = isset( $car_dealer_options['vehicle_listing_desktop_filter_location'] ) ? $car_dealer_options['vehicle_listing_desktop_filter_location'] : 'inline'; $getlayout = cardealer_get_cars_list_layout_style(); if ( 'view-list' === $getlayout ) { $col = 4; } elseif ( ( 'view-grid' === $getlayout ) && ( 'off-canvas' === $desktop_filter_location || 'no' === $listing_sidebar ) ) { $col = 4; } } if ( isset( $_POST['car_col'] ) && $_POST['car_col'] ) { $col = (int) $_POST['car_col']; } return apply_filters( 'cardealer_get_grid_column', $col ); } } if ( ! function_exists( 'cardealer_grid_view_class' ) ) { /** * Grid view class */ function cardealer_grid_view_class() { global $car_dealer_options; $classes = array(); $columns = cardealer_get_grid_column(); $grid_view_class = ''; if ( 3 === $columns || '3' === $columns ) { $col = 4; } if ( 4 === $columns || '4' === $columns ) { $col = 3; } if ( wp_is_mobile() ) { $col = 4; } $getlayout = cardealer_get_cars_list_layout_style(); if ( wp_is_mobile() || ( ! empty( $getlayout ) && 5 !== $columns ) ) { $listing_sidebar = isset( $car_dealer_options['listing_sidebar'] ) ? $car_dealer_options['listing_sidebar'] : 'left'; $desktop_filter_location = isset( $car_dealer_options['vehicle_listing_desktop_filter_location'] ) ? $car_dealer_options['vehicle_listing_desktop_filter_location'] : 'inline'; if ( is_post_type_archive( 'cars' ) && ( 'off-canvas' === $desktop_filter_location || 'no' === $listing_sidebar ) ) { $classes[] = 'col-lg-3 col-md-3 col-sm-3 col-xs-6'; } else { $classes[] = 'col-lg-' . $col . ' col-md-' . $col . ' col-sm-' . $col . ' col-xs-6'; } if ( 'view-masonry' === $getlayout ) { $classes[] = 'masonry-item'; } } elseif ( 5 === $columns ) { $classes[] = 'cd-lazy-load-item'; $classes[] = 'masonry-item'; } $classes = apply_filters( 'cardealer_grid_view_class', $classes, $columns ); $classes = apply_filters( 'cardealer_grid_view_classes_list', $classes, $columns ); $grid_view_class = implode( ' ', $classes ); /** * Filters the classes of grid view style for the inventory listing. * * @since 1.0 * * @param string $grid_view_class Class for grid listing of vehicles. * @param array $classes Array of classes. * @param string|int $columns Number of columns. * @visible true */ $grid_view_class = apply_filters( 'cardealer_grid_view_classes', $grid_view_class, $classes, $columns ); $grid_view_class = apply_filters( 'cardealer_grid_view_classes_str', $grid_view_class, $classes, $columns ); echo 'class="' . esc_attr( $grid_view_class ) . '"'; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } } if ( ! function_exists( 'cardealer_cars_loop' ) ) { /** * Cars loop */ function cardealer_cars_loop() { global $cars_loop; $cars_loop['loop'] = ! empty( $cars_loop['loop'] ) ? $cars_loop['loop'] + 1 : 1; $col = cardealer_get_grid_column(); $cars_loop['columns'] = max( 1, ! empty( $cars_loop['columns'] ) ? $cars_loop['columns'] : $col ); if ( 0 === ( $cars_loop['loop'] - 1 ) % $cars_loop['columns'] || 1 === $cars_loop['columns'] ) { return 'first'; } elseif ( 0 === $cars_loop['loop'] % $cars_loop['columns'] ) { return 'last'; } else { return ''; } } } if ( ! function_exists( 'cardealer_list_view_class_1' ) ) { /** * Function to get list layout class for first section */ function cardealer_list_view_class_1() { global $car_dealer_options; $classes = array(); $getlayout = cardealer_get_cars_list_layout_style(); $list_style = cardealer_get_inv_list_style(); if ( 'view-list' === $getlayout ) { $listing_sidebar = isset( $car_dealer_options['listing_sidebar'] ) ? $car_dealer_options['listing_sidebar'] : 'left'; $desktop_filter_location = isset( $car_dealer_options['vehicle_listing_desktop_filter_location'] ) ? $car_dealer_options['vehicle_listing_desktop_filter_location'] : 'inline'; if ( is_page_template( 'templates/sold-cars.php' ) ) { if ( 'classic' === $list_style ) { $classes[] = 'col-lg-3 col-md-3 col-sm-4'; } else { $classes[] = 'col-lg-3 col-md-4 col-sm-6'; } } else { if ( 'off-canvas' === $desktop_filter_location || 'no' === $listing_sidebar ) { if ( 'classic' === $list_style ) { $classes[] = 'col-lg-3 col-md-3 col-sm-4'; } else { $classes[] = 'col-lg-3 col-md-4 col-sm-6'; } } else { if ( 'classic' === $list_style ) { $classes[] = 'col-lg-4 col-md-5 col-sm-4'; } else { $classes[] = 'col-lg-4 col-md-4 col-sm-4'; } } } echo 'class="' . join( ' ', $classes ) . '"'; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } } } if ( ! function_exists( 'cardealer_list_view_class_2' ) ) { /** * List view class 2 */ function cardealer_list_view_class_2() { global $car_dealer_options; $classes = array(); $getlayout = cardealer_get_cars_list_layout_style(); $list_style = cardealer_get_inv_list_style(); if ( 'view-list' === $getlayout ) { $listing_sidebar = isset( $car_dealer_options['listing_sidebar'] ) ? $car_dealer_options['listing_sidebar'] : 'left'; $desktop_filter_location = isset( $car_dealer_options['vehicle_listing_desktop_filter_location'] ) ? $car_dealer_options['vehicle_listing_desktop_filter_location'] : 'inline'; if ( is_page_template( 'templates/sold-cars.php' ) ) { if ( 'classic' === $list_style ) { $classes[] = 'col-lg-9 col-md-9 col-sm-8'; } else { $classes[] = 'col-lg-9 col-md-8 col-sm-6'; } } else { if ( 'off-canvas' === $desktop_filter_location || 'no' === $listing_sidebar ) { if ( 'classic' === $list_style ) { $classes[] = 'col-lg-9 col-md-9 col-sm-8'; } else { $classes[] = 'col-lg-9 col-md-8 col-sm-6'; } } else { if ( 'classic' === $list_style ) { $classes[] = 'col-lg-8 col-md-7 col-sm-8'; } else { $classes[] = 'col-lg-8 col-md-8 col-sm-8'; } } } echo 'class="' . join( ' ', $classes ) . '"'; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } } } if ( ! function_exists( 'cardealer_get_cars_details_page_sidebar_position' ) ) { /** * Cars details page sidebar position */ function cardealer_get_cars_details_page_sidebar_position() { global $car_dealer_options; $details_page_sidebar = 'left'; if ( isset( $car_dealer_options['cars-details-page-sidebar'] ) && ! empty( $car_dealer_options['cars-details-page-sidebar'] ) ) { $details_page_sidebar = $car_dealer_options['cars-details-page-sidebar']; } return $details_page_sidebar; } } if ( ! function_exists( 'cardealer_get_widget_fuel_efficiency' ) ) { /** * Widget fuel efficiency */ function cardealer_get_widget_fuel_efficiency() { global $car_dealer_options; if ( isset( $car_dealer_options['cars-details-page-sidebar'] ) && 'no' === $car_dealer_options['cars-details-page-sidebar'] ) { $cars_fuel_efficiency_option = ( isset( $car_dealer_options['cars-fuel-efficiency-option'] ) ) ? $car_dealer_options['cars-fuel-efficiency-option'] : 1; if ( 1 === (int) $cars_fuel_efficiency_option ) { the_widget( 'CarDealer_Helper_Widget_Fuel_Efficiency' ); } } } } if ( ! function_exists( 'cardealer_cars_sidebar_class' ) ) { /** * Cars sidebar class * * @param string $custom_class add custom class. */ function cardealer_cars_sidebar_class( $custom_class = 'sidebar' ) { global $car_dealer_options; $listing_sidebar = isset( $car_dealer_options['listing_sidebar'] ) ? $car_dealer_options['listing_sidebar'] : 'left'; $desktop_filter_location = isset( $car_dealer_options['vehicle_listing_desktop_filter_location'] ) ? $car_dealer_options['vehicle_listing_desktop_filter_location'] : 'inline'; if ( 'off-canvas' === $desktop_filter_location || 'no' === $listing_sidebar ) { $content_class = 12; } else { $content_class = 3; } $classes = array( $custom_class ); $classes[] = 'col-lg-' . $content_class . ' col-md-' . $content_class . ' col-sm-12'; echo 'class="' . join( ' ', $classes ) . '"'; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotE } } if ( ! function_exists( 'cardealer_get_car_catlog_sidebar' ) ) { /** * Catlog sidebar left */ function cardealer_get_car_catlog_sidebar() { global $car_dealer_options; $layout = cardealer_get_vehicle_listing_page_layout(); $listing_sidebar = isset( $car_dealer_options['listing_sidebar'] ) ? $car_dealer_options['listing_sidebar'] : 'left'; $desktop_filter_location = isset( $car_dealer_options['vehicle_listing_desktop_filter_location'] ) ? $car_dealer_options['vehicle_listing_desktop_filter_location'] : 'inline'; if ( 'lazyload' === $layout ) { $listing_sidebar = 'left'; } if ( 'off-canvas' !== $desktop_filter_location && ( 'left' === $listing_sidebar || 'right' === $listing_sidebar ) ) { if ( is_active_sidebar( 'listing-cars' ) ) { ?> <aside id="sleft" <?php cardealer_cars_sidebar_class(); ?>> <div class="listing-sidebar"> <?php dynamic_sidebar( 'listing-cars' ); ?> </div> </aside> <?php } } } } if ( ! function_exists( 'cardealer_get_catlog_view' ) ) { /** * Catlog view */ function cardealer_get_catlog_view() { global $car_dealer_options; $theme_color = isset( $car_dealer_options['site_color_scheme_custom']['color'] ) ? $car_dealer_options['site_color_scheme_custom']['color'] : ''; $getlayout = cardealer_get_cars_list_layout_style(); $list_view_layout = cardealer_get_show_hide_list_layout_style(); $layout_css_style = array(); if ( ! empty( $list_view_layout ) ) { ?> <div class="grid-view change-view-button"> <div class="view-icon"> <?php foreach ( $list_view_layout as $key => $value ) { $layout_css_style = ( $getlayout === $value ) ? "background-color:$theme_color;" : ''; if ( 'view-grid' === $value ) { $class = 'view-grid-full'; } elseif( 'view-list' === $value ) { $class = 'view-list-full'; } else { $class = 'view-grid-masonry-full'; } ?> <a class="catlog-layout <?php echo esc_attr( $class ); ?>" data-id="<?php echo esc_attr( $value ); ?>" href="javascript:void(0)"> <span style="<?php echo esc_attr( $layout_css_style ); ?>"> <i class="<?php echo esc_attr( $class ); ?>"></i> </span> </a> <?php } ?> </div> </div><!--.grid-view--> <?php } } } if ( ! function_exists( 'cardealer_cars_catalog_ordering' ) ) : /** * Catalog ordering */ function cardealer_cars_catalog_ordering( $args = array() ) { global $car_dealer_options; $enable_ordering = true; $getlayout = cardealer_get_cars_list_layout_style(); // @codingStandardsIgnoreStart parse_str( $_SERVER['QUERY_STRING'], $params ); // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $query_string = '?' . $_SERVER['QUERY_STRING']; // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized // @codingStandardsIgnoreEnd // Vehicle listing layout. $layout = cardealer_get_vehicle_listing_page_layout(); // replace it with theme option. if ( isset( $car_dealer_options['cars-per-page'] ) ) { $per_page = $car_dealer_options['cars-per-page']; } else { $per_page = 12; } if ( isset( $args['per_page'] ) && $args['per_page'] ) { $per_page = $args['per_page']; } $cars_orderby_selected = cardealer_get_default_sort_by(); // get default option value. if ( isset( $args['cars_orderby'] ) && $args['cars_orderby'] ) { $cars_orderby_selected = $args['cars_orderby']; } if ( isset( $args['cars_order'] ) && $args['cars_order'] ) { $cars_order_selected = $args['cars_order']; } if ( isset( $params['cars_orderby'] ) && ! empty( $params['cars_orderby'] ) ) { $cars_orderby_selected = $params['cars_orderby']; } $cars_order_selected = cardealer_get_default_sort_by_order();// get default option value. if ( isset( $params['cars_order'] ) && ! empty( $params['cars_order'] ) && in_array( $params['cars_order'], array( 'desc', 'asc' ), true ) ) { $cars_order_selected = $params['cars_order']; } $cars_pp_selected = ( isset( $params['cars_pp'] ) && ! empty( $params['cars_pp'] ) ) ? $params['cars_pp'] : $per_page; if ( isset( $args['enable_ordering'] ) && is_bool( $args['enable_ordering'] ) ) { $enable_ordering = $args['enable_ordering']; } if ( $enable_ordering ) { ?> <div class="selected-box pgs-cars-pp-outer"> <select name="cars_pp" id="pgs_cars_pp" class="cd-select-box"> <?php for ( $i = 1; $i <= 5; $i++ ) { $per_page_value = (int) $per_page * (int) $i; ?> <option value="<?php echo esc_html( $per_page_value ); ?>" <?php selected( $cars_pp_selected, $per_page_value ); ?>><?php echo esc_html( $per_page_value ); ?></option> <?php } ?> </select> </div> <?php } $cardealer_orderby_types = array( 'name' => esc_html__( 'Sort by Name', 'cardealer' ), 'sale_price' => esc_html__( 'Sort by Price', 'cardealer' ), 'date' => esc_html__( 'Sort by Date', 'cardealer' ), 'year' => esc_html__( 'Sort by Year', 'cardealer' ), ); ?> <div class="selected-box pgs-cars-orderby-outer"> <div class="select"> <select class="select-box cd-select-box" name="cars_orderby" id="pgs_cars_orderby"> <option value=""><?php esc_html_e( 'Sort by Default', 'cardealer' ); ?></option> <?php foreach ( $cardealer_orderby_types as $cardealer_orderby_v => $cardealer_orderby_label ) { ?> <option value="<?php echo esc_attr( $cardealer_orderby_v ); ?>" <?php selected( $cars_orderby_selected, $cardealer_orderby_v ); ?>><?php echo esc_html( $cardealer_orderby_label ); ?></option> <?php } ?> </select> </div> </div> <?php $sort_order_asc_icon_class = apply_filters( 'cd_vehicle_sort_order_asc_icon_class', 'fa-solid fa-arrow-up-short-wide' ); $sort_order_desc_icon_class = apply_filters( 'cd_vehicle_sort_order_desc_icon_class', 'fa-solid fa-arrow-down-wide-short' ); if ( 'asc' === $cars_order_selected ) { ?> <div class="cars-order text-right"><a id="pgs_cars_order" data-order="desc" data-current_order="asc" href="javascript:void(0)"><i class="<?php echo esc_attr( $sort_order_asc_icon_class ); ?>"></i></a></div> <?php } else { ?> <div class="cars-order text-right"><a id="pgs_cars_order" data-order="asc" data-current_order="desc" href="javascript:void(0)"><i class="<?php echo esc_attr( $sort_order_desc_icon_class ); ?>"></i></a></div> <?php } } endif; if ( ! function_exists( 'cardealer_get_taxonomys_array' ) ) { /** * Taxonomys array */ function cardealer_get_taxonomys_array() { $taxonomies = array( 'car_year', 'car_make', 'car_model', 'car_body_style', 'car_mileage', 'car_fuel_type', 'car_fuel_economy', 'car_trim', 'car_transmission', 'car_condition', 'car_drivetrain', 'car_engine', 'car_exterior_color', 'car_interior_color', 'car_stock_number', 'car_vin_number', 'car_features_options' ); $taxonomies_raw = get_object_taxonomies( 'cars' ); foreach ( $taxonomies_raw as $new_tax ) { if ( in_array( $new_tax, $taxonomies, true ) ) { continue; } $new_tax_obj = get_taxonomy( $new_tax ); if ( isset( $new_tax_obj->include_in_filters ) && true === (bool) $new_tax_obj->include_in_filters ) { $taxonomies[] = $new_tax; } } return apply_filters( 'cardealer_taxonomys_array', $taxonomies ); } } if ( ! function_exists( 'cardealer_get_all_taxonomy_with_terms' ) ) { /** * Taxonomy with terms */ function cardealer_get_all_taxonomy_with_terms() { $attributs = array(); $taxonomys = cardealer_get_taxonomys_array(); foreach ( $taxonomys as $tax ) { $terms = get_terms( array( 'taxonomy' => $tax, 'hide_empty' => true, ) ); $taxonomy_name = get_taxonomy( $tax ); $slug = $taxonomy_name->rewrite['slug']; $label = $taxonomy_name->labels->singular_name; if ( ! empty( $terms ) ) { foreach ( $terms as $tdata ) { $attributs[ $slug ]['terms'][] = $tdata->slug; $attributs[ $slug ]['label'] = $label; $attributs[ $slug ]['slug'] = $slug; } } else { $attributs[ $slug ]['label'] = $label; $attributs[ $slug ]['slug'] = $slug; } } return $attributs; } } if ( ! function_exists( 'cardealer_cars_get_catalog_ordering_args' ) ) { /** * Pass arguments on cars listing page * * @param array $wp_query get the value. */ function cardealer_cars_get_catalog_ordering_args( $wp_query ) { global $wp_query, $car_dealer_options; $taxonomies = cardealer_get_vehicles_taxonomies(); $taxonomies = array_values( $taxonomies ); $tax_query = array( 'relation' => 'AND' ); $current_term = ( is_tax() ) ? $wp_query->get_queried_object() : ''; $cars_inventory_page = ( isset( $car_dealer_options['cars_inventory_page'] ) ) ? $car_dealer_options['cars_inventory_page'] : ''; $is_cars_inventory_page = ( $wp_query->is_page() && 'page' === get_option( 'show_on_front' ) && '' !== $cars_inventory_page && absint( $wp_query->get( 'page_id' ) ) === absint( $cars_inventory_page ) ); $is_cars_taxonomy_page = ( is_tax() && $current_term && ( isset( $current_term->taxonomy ) && in_array( $current_term->taxonomy, $taxonomies ) ) ); if ( ( ! is_admin() && $wp_query->is_main_query() && is_post_type_archive( 'cars' ) ) || $is_cars_inventory_page || $is_cars_taxonomy_page ) { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict $wp_query->set( 'page_id', '' ); $wp_query->is_singular = false; $wp_query->is_post_type_archive = ( cardealer_is_tax_page() ? false : true ); $wp_query->bis_archive = true; $wp_query->is_page = false; // @codingStandardsIgnoreStart parse_str( $_SERVER['QUERY_STRING'], $params ); // @codingStandardsIgnoreEnd $pgs_min_price = isset( $params['min_price'] ) ? esc_attr( $params['min_price'] ) : 0; $pgs_max_price = isset( $params['max_price'] ) ? esc_attr( $params['max_price'] ) : 0; if ( $pgs_min_price > 0 || $pgs_max_price > 0 ) { $prices = cardealer_get_car_filtered_price(); $min = floor( $prices->min_price ); $max = ceil( $prices->max_price ); if ( $min !== $pgs_min_price || $max !== $pgs_max_price ) { $args['meta_query'][] = array( 'key' => 'final_price', 'value' => array( $pgs_min_price, $pgs_max_price ), 'compare' => 'BETWEEN', 'type' => 'NUMERIC', ); } } /* Don't want to show sold car on car listing page */ if ( isset( $car_dealer_options['car_no_sold'] ) && 0 === (int) $car_dealer_options['car_no_sold'] ) { $args['meta_query'][] = array( 'relation' => 'OR', array( 'key' => 'car_status', 'value' => 'sold', 'compare' => '!=', ), array( 'key' => 'car_status', 'compare' => 'NOT EXISTS', ), ); } if ( isset( $params['vehicle_location'] ) && ! empty( $params['vehicle_location'] ) ) { $args['meta_query'][] = array( 'key' => 'vehicle_location', 'value' => $params['vehicle_location'], 'compare' => 'LIKE', ); } /* Set meta query*/ if ( ! empty( $args['meta_query'] ) ) { $wp_query->set( 'meta_query', $args['meta_query'] ); } /* Check Year range option enable from backend */ $is_year_range_active = cardealer_is_year_range_active(); if ( $is_year_range_active ) { $year_range = cardealer_get_year_range(); $yearmin = isset( $year_range['min_year'] ) ? $year_range['min_year'] : ''; $yearmax = isset( $year_range['max_year'] ) ? $year_range['max_year'] : ''; $pgs_min_year = isset( $params['min_year'] ) ? esc_attr( $params['min_year'] ) : 0; $pgs_max_year = isset( $params['max_year'] ) ? esc_attr( $params['max_year'] ) : 0; if ( ! empty( $year_range ) && ( $pgs_min_year > 0 || $pgs_max_year > 0 ) ) { if ( $yearmin !== $pgs_min_year || $yearmax !== $pgs_max_year ) { $terms = get_terms( array( 'taxonomy' => 'car_year', 'hide_empty' => true, ) ); $quryear = array(); if ( ! empty( $terms ) ) { foreach ( $terms as $tdata ) { if ( ( $tdata->slug >= $pgs_min_year ) && ( $tdata->slug <= $pgs_max_year ) ) { $quryear[] = $tdata->slug; } } } $tax_query[] = array( 'taxonomy' => 'car_year', 'field' => 'slug', 'terms' => $quryear, ); } } } $is_mileage_individual = ( isset( $params['mileage_type'] ) && 'individual' === $params['mileage_type'] ) ? $params['mileage_type'] : ''; if ( isset( $params['car_mileage'] ) && ! empty( $params['car_mileage'] ) ) { if ( 'individual' === $is_mileage_individual ) { $tax_query[] = array( 'taxonomy' => 'car_mileage', 'field' => 'slug', 'terms' => $params['car_mileage'], ); } else { $mileage_terms = array(); $get_car_mileage = $params['car_mileage']; $terms = get_terms( array( 'taxonomy' => 'car_mileage', 'hide_empty' => true, ) ); foreach ( $terms as $tdata ) { $mileage = $tdata->slug; if ( is_numeric( $mileage ) && is_numeric( $get_car_mileage ) ) { if ( $mileage < $get_car_mileage ) { $mileage_terms[] = $tdata->slug; } } } if ( ! empty( $mileage_terms ) ) { unset( $wp_query->query_vars['car_mileage'] ); $tax_query[] = array( 'taxonomy' => 'car_mileage', 'field' => 'slug', 'terms' => $mileage_terms, ); } } } $wp_query->set( 'post_type', array( 'cars' ) ); $wp_query->set( 'tax_query', $tax_query ); $pob = cardealer_get_default_sort_by();// get default option value. if ( isset( $params['cars_orderby'] ) && ! empty( $params['cars_orderby'] ) ) { $pob = $params['cars_orderby']; } $order = cardealer_get_default_sort_by_order();// get default option value. if ( isset( $params['cars_order'] ) && ! empty( $params['cars_order'] ) && in_array( $params['cars_order'], array( 'desc', 'asc' ), true ) ) { $order = $params['cars_order']; } switch ( $pob ) { case 'name': $orderby = 'title'; break; case 'sale_price': $orderby = 'meta_value_num'; $wp_query->set( 'meta_key', 'final_price' ); $wp_query->set( 'type', 'NUMERIC' ); break; case 'year': $orderby = 'year'; break; case 'date': $orderby = 'date (post_date)'; break; default: $orderby = 'date (post_date)'; break; } $wp_query->set( 'orderby', $orderby ); $wp_query->set( 'order', $order ); /* set number of car on car listing page */ if ( isset( $params['cars_pp'] ) && ! empty( $params['cars_pp'] ) ) { $per_page = $params['cars_pp']; } elseif ( isset( $car_dealer_options['cars-per-page'] ) && ! empty( $car_dealer_options['cars-per-page'] ) ) { $per_page = $car_dealer_options['cars-per-page']; } else { $per_page = 12; } $wp_query->set( 'posts_per_page', $per_page ); } } } add_action( 'pre_get_posts', 'cardealer_cars_get_catalog_ordering_args' ); if ( ! function_exists( 'orderby_car_year_qur' ) ) { /** * Year qur * * @param string $orderby set orderby. * @param array $wp_query get the value. */ function orderby_car_year_qur( $orderby, $wp_query ) { global $wpdb; if ( isset( $wp_query->query_vars['orderby'] ) && 'year' === $wp_query->query_vars['orderby'] ) { $orderby = "( SELECT GROUP_CONCAT(name ORDER BY name ASC) FROM $wpdb->term_relationships INNER JOIN $wpdb->term_taxonomy USING (term_taxonomy_id) INNER JOIN $wpdb->terms USING (term_id) WHERE $wpdb->posts.ID = object_id AND taxonomy = 'car_year' GROUP BY object_id ) "; $orderby .= ( 'ASC' === strtoupper( $wp_query->get( 'order' ) ) ) ? 'ASC' : 'DESC'; } return $orderby; } /** * Filter for add custom subquery for year wise sorting order in car listing page */ } add_filter( 'posts_orderby', 'orderby_car_year_qur', 10, 2 ); if ( ! function_exists( 'cardealer_set_tex_query_array' ) ) { /** * Tax query * * @param array $taxonomys . * @param array $post . */ function cardealer_set_tex_query_array( $taxonomys, $post ) { $mileage_terms = array(); $arg = array(); $year_rang_slider = cardealer_is_year_range_active(); $is_mileage_individual = ( isset( $_GET['mileage_type'] ) && 'individual' === $_GET['mileage_type'] ) ? $_GET['mileage_type'] : ''; if ( isset( $_GET ) && function_exists( 'cdhl_get_cars_taxonomy' ) ) { // phpcs:ignore WordPress.Security.NonceVerification $cars_taxonomy = cdhl_get_cars_taxonomy(); $cfb = array(); foreach ( $_GET as $key => $val ) { // phpcs:ignore WordPress.Security.NonceVerification if ( in_array( $key, $cars_taxonomy ) ) { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict $cfb[] = $key; } } if ( ! empty( $cfb ) ) { $taxonomys = array_unique( array_merge( $taxonomys, $cfb ) ); } } $vehicle_cat_assigned = false; foreach ( $taxonomys as $tax ) { if ( isset( $post[ $tax ] ) && '' !== $post[ $tax ] ) { foreach ( $post as $key => $val ) { if ( $key === $tax ) { if ( 'car_mileage' === $key && 'individual' !== $is_mileage_individual ) { $terms = get_terms( array( 'taxonomy' => 'car_mileage', 'hide_empty' => true, ) ); foreach ( $terms as $tdata ) { $mileage = $tdata->slug; $post_mileage = $post[ $tax ]; if ( is_numeric( $mileage ) && is_numeric( $post_mileage ) ) { if ( $mileage < $post[ $tax ] ) { $mileage_terms[] = $tdata->slug; } } } $arg[] = array( 'taxonomy' => $tax, 'field' => 'slug', 'terms' => $mileage_terms, ); } else { if ( 'car_year' !== $key || ( 'car_year' === $key && ! $year_rang_slider ) ) { if ( $key === 'vehicle_cat' ) { $vehicle_cat_assigned = true; } $arg[] = array( 'taxonomy' => $tax, 'field' => 'slug', 'terms' => array( $post[ $tax ] ), ); } } } } } } if ( ( is_tax( 'vehicle_cat' ) || ( isset( $post['is_vehicle_cat'] ) && 'yes' === $post['is_vehicle_cat'] ) ) && ! $vehicle_cat_assigned ) { global $wp_query; if ( isset( $wp_query->query_vars['vehicle_cat'] ) && ! empty( $wp_query->query_vars['vehicle_cat'] ) ) { $vehicle_cat = $wp_query->query_vars['vehicle_cat']; } elseif ( isset( $post['vehicle_cat'] ) && ! empty( $post['vehicle_cat'] ) ) { $vehicle_cat = $post['vehicle_cat']; } $arg[] = array( 'taxonomy' => 'vehicle_cat', 'field' => 'slug', 'terms' => array( $vehicle_cat ), ); } if ( $year_rang_slider ) { $year_range = cardealer_get_year_range(); $yearmin = isset( $year_range['min_year'] ) ? $year_range['min_year'] : ''; $yearmax = isset( $year_range['max_year'] ) ? $year_range['max_year'] : ''; $pgs_min_year = isset( $post['min_year'] ) ? esc_attr( $post['min_year'] ) : 0; $pgs_max_year = isset( $post['max_year'] ) ? esc_attr( $post['max_year'] ) : 0; $year_rang_qur = array(); if ( $pgs_min_year > 0 || $pgs_max_year > 0 ) { if ( $yearmin !== $pgs_min_year || $yearmax !== $pgs_max_year ) { $terms = get_terms( array( 'taxonomy' => 'car_year', 'hide_empty' => true, ) ); $quryear = array(); $taxonomy_name = get_taxonomy( 'car_year' ); $slug = $taxonomy_name->rewrite['slug']; $label = $taxonomy_name->labels->menu_name; if ( ! empty( $terms ) ) { foreach ( $terms as $tdata ) { if ( ( $tdata->slug >= $pgs_min_year ) && ( $tdata->slug <= $pgs_max_year ) ) { $quryear[] = $tdata->slug; } } } $arg[] = array( 'taxonomy' => 'car_year', 'field' => 'slug', 'terms' => $quryear, 'operator' => 'IN', ); } } } /** * Filters vehicle taxonomy query. * * @since 1.0 * @param array $arg Vehicle taxonomy query arguments. * @visible true */ return apply_filters( 'cardealer_set_tax_query', $arg ); } } add_action( 'before_vehicle_inventory_page_content', 'cardealer_inventory_page_hidden_fields', 10 ); function cardealer_inventory_page_hidden_fields( $layout ) { $vehicle_location = ( isset($_GET['vehicle_location']) && ! empty($_GET['vehicle_location']) ) ? $_GET['vehicle_location'] : ''; if ( ! empty($vehicle_location) ) { ob_start(); ?> <input type="hidden" name="vehicle_location" class="vehicle-location-input" value="<?php echo esc_html($vehicle_location); ?>" /> <?php echo ob_get_clean(); } return $layout; } if ( ! function_exists( 'cardealer_get_all_filters' ) ) { /** * Get all filter select box */ function cardealer_get_all_filters( $active_filters = false, $fixed_attr = array() ) { $taxonomys = cardealer_get_filters_taxonomy(); $get_arg = array(); $get_url_terms = array(); if ( is_tax() ) { if ( 'car_mileage' !== get_query_var( 'taxonomy' ) ) { $term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); if ( ! empty( $term ) ) { $_GET[ $term->taxonomy ] = $term->slug; } } } if ( $fixed_attr ) { foreach ( $fixed_attr as $tax => $value ) { $_GET[ $tax ] = $value; } } // @codingStandardsIgnoreStart foreach ( $taxonomys as $tax ) { /** Check from url if there any filter*/ if ( isset( $_GET[ $tax ] ) && '' !== $_GET[ $tax ] ) { if ( isset( $_GET['car_mileage'] ) && ! empty( $_GET['car_mileage'] ) ) { $get_arg[] = array( 'taxonomy' => $tax, 'field' => 'slug', 'terms' => array( $_GET[ $tax ] ), 'compare' => '<', 'type' => 'NUMERIC', ); } else { $get_arg[] = array( 'taxonomy' => $tax, 'field' => 'slug', 'terms' => array( $_GET[ $tax ] ), ); } } } // @codingStandardsIgnoreEnd /** Check year_range filter is active then add in query*/ $year_range = cardealer_get_year_range(); $yearmin = isset( $year_range['min_year'] ) ? $year_range['min_year'] : 0; $yearmax = isset( $year_range['max_year'] ) ? $year_range['max_year'] : 0; $pgs_min_year = isset( $_GET['min_year'] ) ? sanitize_text_field( wp_unslash( $_GET['min_year'] ) ) : 0; // phpcs:ignore WordPress.Security.NonceVerification $pgs_max_year = isset( $_GET['max_year'] ) ? sanitize_text_field( wp_unslash( $_GET['max_year'] ) ) : 0; // phpcs:ignore WordPress.Security.NonceVerification $year_rang_qur = array(); if ( $pgs_min_year > 0 || $pgs_max_year > 0 ) { if ( $yearmin !== $pgs_min_year || $yearmax !== $pgs_max_year ) { $terms = get_terms( array( 'taxonomy' => 'car_year', 'hide_empty' => true, ) ); $quryear = array(); $taxonomy_name = get_taxonomy( 'car_year' ); $slug = $taxonomy_name->rewrite['slug']; $label = $taxonomy_name->labels->menu_name; if ( ! empty( $terms ) ) { foreach ( $terms as $tdata ) { if ( ( $tdata->slug >= $pgs_min_year ) && ( $tdata->slug <= $pgs_max_year ) ) { $quryear[] = $tdata->slug; } } } $get_arg['tax_query'][] = array( 'taxonomy' => 'car_year', 'field' => 'slug', 'terms' => $quryear, 'operator' => 'IN', ); } } /** * Filters the search arguments used in filtering vehicle inventory on inventory page. * * @since 1.0 * * @param array $get_arg Array arguments for vehicle filter query. * @visible true */ $get_arg = apply_filters( 'cardealer_get_all_filters', $get_arg ); /** * Pass query var * * @param array $get_arg pass query var if any in url else it blank */ // https://potezasupport.ticksy.com/ticket/3194813/ // https://gitlab.com/dinesh4monto/cardealer/-/issues/754 echo cardealer_new_get_all_filters( $get_arg, $active_filters, $fixed_attr ); /* echo wp_kses( $attributs, array( 'div' => array( 'id' => true, 'class' => true, 'tabindex' => true, 'data-*' => true, ), 'span' => array( 'id' => true, 'class' => true, ), 'strong' => array( 'id' => true, 'class' => true, ), 'ul' => array( 'id' => true, 'class' => true, 'data-all-listings' => true, ), 'li' => array( 'id' => true, 'class' => true, 'style' => true, 'data-type' => true, ), 'select' => array( 'id' => true, 'class' => true, 'data-tax' => true, 'data-id' => true, 'name' => true, 'style' => true, ), 'option' => array( 'id' => true, 'class' => true, 'value' => true, 'selected' => true, ), 'a' => array( 'id' => true, 'class' => true, 'href' => true, ), 'i' => array( 'class' => true, ), 'input' => array( 'class' => true, 'type' => true, 'id' => true, 'name' => true, 'value' => true, 'data-yearmin' => true, 'data-yearmax' => true, 'readonly' => true, 'data-cfb' => true, 'data-min' => true, 'data-max' => true, 'data-step' => true, ), 'label' => array( 'class' => true, 'for' => true, ), ) ); */ } } if ( ! function_exists( 'cardealer_new_get_all_filters' ) ) { /** * Get all filters * * @param array $get_arg . */ function cardealer_new_get_all_filters( $get_arg, $active_filters = false, $fixed_attr = array() ) { global $car_dealer_options; $is_vehicle_cat = false; $year_sorting = ( isset( $car_dealer_options['cars-year-sorting'] ) ) ? $car_dealer_options['cars-year-sorting'] : ''; if ( is_tax( 'vehicle_cat' ) ) { $is_vehicle_cat = false; global $wp_query; $get_arg[] = array( 'taxonomy' => 'vehicle_cat', 'field' => 'slug', 'terms' => array( $wp_query->query_vars['vehicle_cat'] ), ); } $taxonomys = cardealer_get_filters_taxonomy(); $args = cardealer_make_filter_wp_query( $_GET ); // phpcs:ignore WordPress.Security.NonceVerification $result_filter = array(); $args_new = $args; $args_new['fields'] = 'ids'; $args_new['no_found_rows'] = true; $filter_query_args = array_replace( $args_new, array( 'posts_per_page' => -1 ) ); $filter_query = new WP_Query( $filter_query_args ); $tot_result = $filter_query->post_count; if ( $filter_query->have_posts() ) { if ( $tot_result > 0 ) { foreach ( $taxonomys as $tax ) { $tax_args = array( 'orderby' => 'name', 'order' => 'ASC', 'fields' => 'all', ); $terms = wp_get_object_terms( $filter_query->posts, $tax, $tax_args ); foreach ( $terms as $tdata ) { if ( $tdata->taxonomy === $tax ) { $result_filter[ $tax ][] = array( 'term_id' => $tdata->term_id, 'slug' => $tdata->slug, 'name' => $tdata->name, 'taxonomy' => $tdata->taxonomy, ); } } } } if ( $is_vehicle_cat ) { $args = array( 'orderby' => 'name', 'order' => 'ASC', 'fields' => 'all', ); $terms = wp_get_object_terms( $filter_query->posts, 'vehicle_cat', $tax_args ); foreach ( $terms as $tdata ) { if ( 'vehicle_cat' === $tdata->taxonomy ) { $result_filter[ $tax ][] = array( 'term_id' => $tdata->term_id, 'slug' => $tdata->slug, 'name' => $tdata->name, 'taxonomy' => $tdata->taxonomy, ); } } } wp_reset_postdata(); } $is_year_range_active = cardealer_is_year_range_active(); $attributs = '<div class="cars-total-vehicles">'; $attributs .= '<span class="stripe"><strong><span class="number_of_listings">' . esc_html( $tot_result ) . '</span> '; $attributs .= '<span class="listings_grammar">' . esc_html__( 'Vehicles Matching', 'cardealer' ) . '</span></strong></span>'; $attributs .= '<ul class="stripe-item filter margin-bottom-none" data-all-listings="All Listings">'; foreach ( $_GET as $gkey => $gval ) { // phpcs:ignore WordPress.Security.NonceVerification if ( in_array( $gkey, $taxonomys ) ) { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict $taxonomy_name = get_taxonomy( $gkey ); $label = $taxonomy_name->labels->singular_name; $mileage_compare = '≤'; if ( 'car_mileage' === $gkey ) { if ( isset( $_GET['mileage_type'] ) && 'individual' === $_GET['mileage_type'] ) { $mileage_compare = ''; } $attributs .= '<li class="stripe-single-item stripe-item-' . esc_attr( $gkey ) . '" data-type="' . esc_attr( $gkey ) . '" ><a href="javascript:void(0)"><i class="far fa-times-circle"></i> ' . esc_html( $label ) . ' : <span data-key="' . esc_attr( sanitize_text_field( wp_unslash( $_GET[ $gkey ] ) ) ) . '">' . $mileage_compare . ' ' . esc_html( cardealer_get_cars_formated_mileage( sanitize_text_field( wp_unslash( $_GET[ $gkey ] ) ) ) ) . '</span></a></li>'; // phpcs:ignore } else { $term = get_term_by( 'slug', $gval, $gkey ); $term_name = isset( $term->name ) ? $term->name : ''; if ( isset( $fixed_attr[$gkey] ) && $fixed_attr[$gkey] ) { $attributs .= '<li class="stripe-single-item disabled stripe-item-' . esc_attr( $gkey ) . '" data-disabled="true" data-type="' . esc_attr( $gkey ) . '" >' . esc_html( $label ) . ' : <span data-key="' . esc_attr( $gval ) . '">' . esc_html( $term_name ) . '</span></li>'; } else { $attributs .= '<li class="stripe-single-item stripe-item-' . esc_attr( $gkey ) . '" data-type="' . esc_attr( $gkey ) . '" ><a href="javascript:void(0)"><i class="far fa-times-circle"></i> ' . esc_html( $label ) . ' : <span data-key="' . esc_attr( $gval ) . '">' . esc_html( $term_name ) . '</span></a></li>'; } } } if ( 'vehicle_location' === $gkey ) { $attributs .= '<li class="stripe-single-item stripe-item-' . esc_attr( $gkey ) . '" data-type="' . esc_attr( $gkey ) . '" ><a href="javascript:void(0)"><i class="far fa-times-circle"></i> ' . esc_html__( 'Location', 'cardealer' ) . ' : <span data-key="' . esc_attr( sanitize_text_field( wp_unslash( $_GET[ $gkey ] ) ) ) . '">' . esc_html( sanitize_text_field( wp_unslash( $_GET[ $gkey ] ) ) ) . '</span></a></li>'; // phpcs:ignore } } $attributs .= '</ul>'; $attributs .= '</div>'; if ( ! $active_filters ) { $attributs .= '<div class="listing_sort">'; $attributs .= '<div class="sort-filters">'; $t = 1; $year_range_slider_location = cardealer_get_year_range_slider_location(); if ( $is_year_range_active ) { if ( 'in_filters' === $year_range_slider_location ) { $year_range_filters = cardealer_get_year_range_filters( '', array( 'location' => 'filters' ) ); $attributs .= $year_range_filters; } $key = array_search( 'car_year', $taxonomys, true ); if ( $key ) { unset( $taxonomys[ $key ] ); } } /** Here we create selectbox as per query or default*/ foreach ( $taxonomys as $tax ) { $taxonomy_name = get_taxonomy( $tax ); $label = $taxonomy_name->labels->singular_name; if ( isset( $fixed_attr[$tax] ) && $fixed_attr[$tax] ) { $attributs .= '<select disabled data-tax="' . esc_attr( $label ) . '" data-id="' . esc_attr( $tax ) . '" name="' . esc_attr( $tax ) . '" class="select-sort-filters disabled cd-select-box sort_' . esc_attr( $tax ) . '">'; } else { $attributs .= '<select data-tax="' . esc_attr( $label ) . '" data-id="' . esc_attr( $tax ) . '" name="' . esc_attr( $tax ) . '" class="select-sort-filters cd-select-box sort_' . esc_attr( $tax ) . '">'; } $attributs .= '<option value="">' . esc_html( $label ) . '</option>'; $car_years = array(); /** Cehck is there any argumet for filter term */ $newarr = array(); if ( ! empty( $result_filter[ $tax ] ) ) { foreach ( $result_filter[ $tax ] as $term_data ) { $selected = ''; if ( 'car_mileage' !== $tax ) { if ( isset( $_GET[ $tax ] ) && sanitize_text_field( wp_unslash( $_GET[ $tax ] ) ) ) { // phpcs:ignore WordPress.Security.NonceVerification if ( $_GET[ $tax ] === $term_data['slug'] ) { // phpcs:ignore WordPress.Security.NonceVerification $selected = "selected='selected'"; } } if ( ! in_array( $term_data['slug'], $newarr ) ) { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict if ( 'car_year' === $tax && $year_sorting ) { $car_years[$term_data['slug']] = $term_data['name']; } else { $attributs .= '<option value="' . $term_data['slug'] . '" ' . $selected . '>' . $term_data['name'] . '</option>'; } $newarr[] = $term_data['slug']; } } else { $mileage_array = cardealer_get_mileage_array(); if ( 'car_mileage' === $tax && 1 === $t ) { foreach ( $mileage_array as $mileage ) { $selected = ''; if ( isset( $_GET['car_mileage'] ) && (int) $_GET['car_mileage'] === (int) $mileage ) { // phpcs:ignore WordPress.Security.NonceVerification $selected = "selected=''"; } $attributs .= '<option value="' . esc_attr( $mileage ) . '" ' . esc_attr( $selected ) . '>≤ ' . esc_html( cardealer_get_cars_formated_mileage( $mileage ) ) . '</option>'; } $t++; } } } } else { if ( isset( $fixed_attr[$tax] ) && $fixed_attr[$tax] ) { $attributs .= '<option value="' . $tax . '" selected >' . $fixed_attr[$tax] . '</option>'; } } if ( 'car_year' === $tax && $year_sorting && $car_years ) { if ( 'asc' === $year_sorting ) { ksort( $car_years ); } elseif( 'desc' === $year_sorting ) { krsort( $car_years ); } $selected = ''; foreach ( $car_years as $key => $value ) { if ( isset( $_GET[ $tax ] ) && '' !== $_GET[ $tax ] ) { // phpcs:ignore WordPress.Security.NonceVerification if ( $_GET[ $tax ] === $key ) { // phpcs:ignore WordPress.Security.NonceVerification $selected = "selected=''"; } } $attributs .= '<option value="' . esc_attr( $key ) . '" ' . esc_attr( $selected ) . '>' . esc_html( $value ) . '</option>'; } } $attributs .= '</select>'; } $attributs .= '<div class="reset_filters-container"><a class="button reset_filters" href="javascript:void(0);">' . esc_html__( 'Reset', 'cardealer' ) . '</a></div>'; $attributs .= '</div>'; $attributs .= '<span class="filter-loader"></span></div>'; } return $attributs; } } if ( ! function_exists( 'cardealer_get_filters_taxonomy' ) ) { /** * Filters taxonomy */ function cardealer_get_filters_taxonomy() { global $car_dealer_options; $taxonomies = array( 'car_year', 'car_make', 'car_model', 'car_body_style', 'car_condition', 'car_mileage', 'car_transmission', 'car_drivetrain', 'car_engine', 'car_fuel_economy', 'car_exterior_color' ); $taxonomies_raw = get_object_taxonomies( 'cars' ); foreach ( $taxonomies_raw as $new_tax ) { if ( in_array( $new_tax, $taxonomies, true ) ) { continue; } $new_tax_obj = get_taxonomy( $new_tax ); if ( isset( $new_tax_obj->include_in_filters ) && true === (bool) $new_tax_obj->include_in_filters ) { $taxonomies[] = $new_tax; } } /** * Filters the elements of vehicle taxonomy used on vehicle inventory page filters. * * @since 1.0 * @return array Array of vehicle taxonomy slugs. * $visible true */ $taxonomys = apply_filters( 'cardealer_filters_taxonomy_array', $taxonomies ); if ( isset( $car_dealer_options['cars_listing_filters']['Added Filters'] ) ) { unset( $car_dealer_options['cars_listing_filters']['Added Filters']['placebo'] ); $car_attributes = $car_dealer_options['cars_listing_filters']['Added Filters']; if ( ! empty( $car_attributes ) ) { $taxonomys = array(); foreach ( $car_attributes as $key => $car_att ) { $taxonomys[] = $key; } } } // Check year range slider enabled? $is_year_range_active = cardealer_is_year_range_active(); if ( $is_year_range_active ) { if ( ! array_search( 'car_year', $taxonomys ) ) { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict $key = array_search( 'car_year', $taxonomys ); // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict unset( $taxonomys[ $key ] ); } } /** * Filters the array of vehicle filter attributes displayed on vehicle inventory page. * * @since 1.0 * * @param array $taxonomys Array of vehicle filter attributes. * @visible true */ return apply_filters( 'cardealer_get_filters_taxonomy', $taxonomys ); } } if ( ! function_exists( 'cardealer_get_mileage_array' ) ) { /** * Get array */ function cardealer_get_mileage_array() { global $car_dealer_options; $min_mileage = ( isset( $car_dealer_options['min_mileage'] ) && $car_dealer_options['min_mileage'] ) ? (int) $car_dealer_options['min_mileage'] : 10000; $add_per_mileage = ( isset( $car_dealer_options['add_per_mileage'] ) && $car_dealer_options['add_per_mileage'] ) ? (int) $car_dealer_options['add_per_mileage'] : 10000; $mileage_step = ( isset( $car_dealer_options['mileage_step'] ) && $car_dealer_options['mileage_step'] ) ? (int) $car_dealer_options['mileage_step'] : 10; if ( $min_mileage && $add_per_mileage && $mileage_step ) { $mileage_array = array( $min_mileage ); $new_mileage = $min_mileage; for ( $i = 1; $i < $mileage_step; $i++ ) { $new_mileage = $new_mileage + $add_per_mileage; $mileage_array[] = $new_mileage; } $mileage_max = cardealer_get_mileage_max(); if ( $new_mileage < $mileage_max ) { $mileage_array[] = cardealer_roundup_to_nearest_multiple( $mileage_max, apply_filters( 'cardealer_roundup_to_nearest_multiple_increment', 1000 ) ); } } else { $mileage_array = array( '10000', '20000', '30000', '40000', '50000', '60000', '70000', '80000', '90000', '100000' ); } /** * Filters the vehicle mileage array - mostly used in vehicle filters on "vehicle inventory page" and "potenza custom filters" shortcode. * * @since 1.0 * @param array $mileage_array Mileage array elements. * @visible true */ return apply_filters( 'cardealer_get_mileage_array', $mileage_array ); } } if ( ! function_exists( 'cardealer_make_filter_wp_query' ) ) { /** * Make filter wp query * * @param array $request_method . */ function cardealer_make_filter_wp_query( $request_method ) { $tax_query_arry = array(); $taxonomys = cardealer_get_filters_taxonomy(); if ( isset( $request_method['selected_attr'] ) && ! empty( $request_method['selected_attr'] ) ) { $taxonomys = explode( ',', $request_method['selected_attr'] ); } if ( isset( $request_method['vehicle_cat'] ) && $request_method['vehicle_cat'] ) { $taxonomys[] = 'vehicle_cat'; } $tax_query_arry = cardealer_set_tex_query_array( $taxonomys, $request_method ); $data_html = ''; $pagination_html = ''; $cars_orderby = 'date (post_date)'; $data_order = 'asc'; global $car_dealer_options; $params = ''; // @codingStandardsIgnoreStart if( isset( $_SERVER['QUERY_STRING'] ) ) { parse_str( $_SERVER['QUERY_STRING'], $params ); // the context is safe and reliable. } // @codingStandardsIgnoreEnd $per_page = 12; $cars_order = 'date (post_date)'; if ( isset( $car_dealer_options['cars-per-page'] ) ) { $per_page = $car_dealer_options['cars-per-page']; } if ( isset( $request_method['cars_pp'] ) && ! empty( $request_method['cars_pp'] ) ) { $per_page = $request_method['cars_pp']; } if ( isset( $request_method['cars_order'] ) && ! empty( $request_method['cars_order'] ) ) { $data_order = $request_method['cars_order']; } $paged = isset( $request_method['paged'] ) ? (int) $request_method['paged'] : 1; $args = array( 'post_type' => 'cars', 'post_status' => array( 'publish', 'acf-disabled' ), 'posts_per_page' => $per_page, 'order' => $data_order, 'paged' => $paged, ); if ( isset( $request_method['cars_orderby'] ) && ! empty( $request_method['cars_orderby'] ) ) { $cars_orderby = $request_method['cars_orderby']; } if ( 'sale_price' === $cars_orderby ) { $args['orderby'] = 'meta_value_num'; $args['meta_key'] = 'final_price'; // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key } elseif ( 'featured' === $cars_orderby ) { $args['orderby'] = 'meta_value'; $args['meta_key'] = 'featured'; // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key } else { $args['orderby'] = $cars_orderby; } if ( isset( $request_method['s'] ) && ! empty( $request_method['s'] ) ) { $args['s'] = $request_method['s']; } if ( ! empty( $tax_query_arry ) ) { $args['tax_query'] = array( 'relation' => 'AND' ); // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query foreach ( $tax_query_arry as $k => $val ) { $args['tax_query'][ $k ] = $val; } } /* Set Price meta query */ $pgs_min_price = isset( $request_method['min_price'] ) ? esc_attr( $request_method['min_price'] ) : 0; $pgs_max_price = isset( $request_method['max_price'] ) ? esc_attr( $request_method['max_price'] ) : 0; if ( $pgs_min_price > 0 || $pgs_max_price > 0 ) { $prices = cardealer_get_car_filtered_price(); $min = floor( $prices->min_price ); $max = ceil( $prices->max_price ); if ( $min !== $pgs_min_price || $max !== $pgs_max_price ) { $args['meta_query'][] = array( 'key' => 'final_price', 'value' => array( $pgs_min_price, $pgs_max_price ), 'compare' => 'BETWEEN', 'type' => 'NUMERIC', ); } } /* Don't want to show sold car on car listing page */ if ( isset( $car_dealer_options['car_no_sold'] ) && ! filter_var( $car_dealer_options['car_no_sold'], FILTER_VALIDATE_BOOLEAN ) ) { $args['meta_query'][] = array( 'relation' => 'OR', array( 'key' => 'car_status', 'value' => 'sold', 'compare' => '!=', ), array( 'key' => 'car_status', 'compare' => 'NOT EXISTS', ), ); } if ( isset( $request_method['vehicle_location'] ) && ! empty( $request_method['vehicle_location'] ) ) { $args['meta_query'][] = array( 'key' => 'vehicle_location', 'value' => $request_method['vehicle_location'], 'compare' => 'LIKE', ); } return $args; } } add_action( 'wp_ajax_cardealer_cars_filter_query', 'cardealer_cars_filter_query' ); add_action( 'wp_ajax_nopriv_cardealer_cars_filter_query', 'cardealer_cars_filter_query' ); if ( ! function_exists( 'cardealer_cars_filter_query' ) ) { /** * Filter query */ function cardealer_cars_filter_query() { $nonce = isset( $_REQUEST['query_nonce'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['query_nonce'] ) ) : ''; if ( wp_verify_nonce( $nonce, 'cardealer_cars_filter_query_nonce' ) ) { $attributs = cardealer_get_all_filters_with_ajax(); echo wp_json_encode( $attributs, JSON_FORCE_OBJECT ); } exit(); } } add_action( 'wp_ajax_cardealer_load_more_vehicles', 'cardealer_load_more_vehicles' ); add_action( 'wp_ajax_nopriv_cardealer_load_more_vehicles', 'cardealer_load_more_vehicles' ); if ( ! function_exists( 'cardealer_load_more_vehicles' ) ) { /** * Load more vehicles */ function cardealer_load_more_vehicles() { global $car_dealer_options; do_action( 'cardealer_before_load_more_vehicles', $car_dealer_options ); // @codingStandardsIgnoreStart $data_html = ''; $status = 0; $filter_vars = json_decode( stripslashes( $_POST['filter_vars'] ), true ); $paged = ( isset( $_POST['paged'] ) && ! empty( $_POST['paged'] ) ) ? sanitize_text_field( wp_unslash( $_POST['paged'] ) ) : 2; $filter_vars['paged'] = $paged; $first_page_records = 12; if ( isset( $car_dealer_options['cars-per-page'] ) ) { $first_page_records = $car_dealer_options['cars-per-page']; // records displayed on page load. } $records_processed = ( isset( $_POST['records_processed'] ) && ( 0 !== (int) $_POST['records_processed'] ) ) ? sanitize_text_field( wp_unslash( $_POST['records_processed'] ) ) : $first_page_records; // @codingStandardsIgnoreEnd /** * Filters the value of number of records to load per ajax call for lazyload vehicle listing. * * @since 1.0 * * @param number $first_page_records Number of records to show on ajax call. * @visible true */ $filter_vars['cars_pp'] = apply_filters( 'cd_ajax_inventory_load_per_call', $first_page_records ); $args = cardealer_make_filter_wp_query( $filter_vars ); if ( is_tax( 'vehicle_cat' ) || ( isset( $post['is_vehicle_cat'] ) && 'yes' === $post['is_vehicle_cat'] ) ) { global $wp_query; if ( isset( $wp_query->query_vars['vehicle_cat'] ) && ! empty( $wp_query->query_vars['vehicle_cat'] ) ) { $vehicle_cat = $wp_query->query_vars['vehicle_cat']; } elseif ( isset( $post['vehicle_cat'] ) && ! empty( $post['vehicle_cat'] ) ) { $vehicle_cat = $post['vehicle_cat']; } $args[] = array( 'taxonomy' => 'vehicle_cat', 'field' => 'slug', 'terms' => array( $vehicle_cat ), ); } $query = new WP_Query( $args ); $imgurls = array(); // Check for nonce security. $nonce = isset( $_POST['ajax_nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['ajax_nonce'] ) ) : ''; if ( ! wp_verify_nonce( $nonce, 'load_more_vehicles_nonce' ) ) { $status = 2; $data_html = '<div class="col-sm-12 load-status"><div class="alert alert-warning">' . esc_html__( 'Something is wrong; please try again..!', 'cardealer' ) . '</div></div>'; } else { if ( $query->have_posts() ) { $status = 1; while ( $query->have_posts() ) : $query->the_post(); ob_start(); $imgurls[] = cardealer_get_cars_image_src( 'car_catalog_image', get_the_ID() ); get_template_part( 'template-parts/cars/content', 'cars' ); $datahtml = ob_get_clean(); $data_html .= $datahtml; endwhile; $records_processed += $query->post_count; wp_reset_postdata(); } else { $status = 2; $data_html = '<div class="col-sm-12 load-status"><div class="alert alert-warning">' . esc_html__( 'All vehicles loaded..!', 'cardealer' ) . '</div></div>'; } } echo wp_json_encode( array( 'status' => $status, 'imgURLs' => $imgurls, 'data_html' => $data_html, 'paged' => $paged + 1, 'records_processed' => $records_processed, ) ); wp_die(); } } if ( ! function_exists( 'cardealer_get_all_filters_with_ajax' ) ) { /** * Filter with ajax */ function cardealer_get_all_filters_with_ajax() { global $car_dealer_options; do_action( 'cardealer_before_get_all_filters_with_ajax', $car_dealer_options ); $taxonomys = cardealer_get_filters_taxonomy(); // @codingStandardsIgnoreStart if ( isset( $_REQUEST['selected_attr'] ) && ! empty( $_REQUEST['selected_attr'] ) ) { $taxonomys = explode( ',', $_REQUEST['selected_attr'] ); } // @codingStandardsIgnoreEnd $result_filter = array(); $pagination_html = ''; $data_html = ''; $featured_cars = ''; $data_order = 'asc'; $args = cardealer_make_filter_wp_query( $_POST ); // phpcs:ignore WordPress.Security.NonceVerification if ( isset( $_POST['cars_order'] ) && ! empty( $_POST['cars_order'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification $data_order = sanitize_text_field( wp_unslash( $_POST['cars_order'] ) ); // phpcs:ignore WordPress.Security.NonceVerification } $paged = isset( $_POST['paged'] ) ? (int) $_POST['paged'] : 1; // phpcs:ignore WordPress.Security.NonceVerification $query = new WP_Query( $args ); $tot_result = $query->post_count; $found_posts = $query->found_posts; /** * Get data html * */ if ( $query->have_posts() ) { ob_start(); while ( $query->have_posts() ) : $query->the_post(); get_template_part( 'template-parts/cars/content', 'cars' ); endwhile; $datahtml = ob_get_clean(); $data_html .= $datahtml; wp_reset_postdata(); $pagination_html = cardealer_cars_pagination( false, $query, $paged ); } else { $data_html = '<div class="col-sm-12"><div class="alert alert-warning">' . esc_html__( 'No result were found matching your selection.', 'cardealer' ) . '</div></<div>'; } // Featured vehicles start. $featured_vehicles_count = cardealer_get_featured_vehicles_count(); $featured_vehicles_filtered = cardealer_show_featured_vehicles_filtered(); if ( 'non_filtered' == $featured_vehicles_filtered ) { $featured_args = array( 'post_type' => 'cars', 'posts_per_page' => $featured_vehicles_count, 'paged' => 1, 'orderby' => 'rand', 'tax_query' => array(), 'meta_query' => array(), ); } else { $featured_args = $args; $featured_args['paged'] = 1; $featured_args['posts_per_page'] = $featured_vehicles_count; $featured_args['orderby'] = 'rand'; } $featured_args['post_status'] = array( 'publish' ); $featured_args['meta_query']['relation'] = 'AND'; $featured_args['meta_query'][] = array( 'key' => 'featured', 'value' => '1', 'compare' => '=', ); // $featured_args['meta_query'][] = array( // 'key' => 'cdfs_advertise_item_status', // 'value' => $current_timestamp, // 'compare' => '>', // 'type' => 'NUMERIC' // ); $featured_args = apply_filters( 'cardealer/featured_vehicles/query_args', $featured_args ); $featured_query = new WP_Query( $featured_args ); $featured_cars_count = $featured_query->post_count; $featured_cars_found = $featured_query->found_posts; ob_start(); global $cardealer_is_featured_vehicles_section; if ( $featured_query->have_posts() ) { $cardealer_is_featured_vehicles_section = true; while ( $featured_query->have_posts() ) { $featured_query->the_post(); get_template_part( 'template-parts/cars/content', 'cars' ); } wp_reset_postdata(); $cardealer_is_featured_vehicles_section = false; } $featured_cars .= ob_get_clean(); // Featured vehicles end. if ( ! isset( $_POST['cfb'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification $attributs = '<div class="listing_sort">'; } if ( isset( $_POST['cfb'] ) && 'yes' === $_POST['cfb'] ) { // phpcs:ignore WordPress.Security.NonceVerification $attributs = ''; } $args['fields'] = 'ids'; $filter_query_args = array_replace( $args, array( 'posts_per_page'=> -1 ) ); $tax_query_arry = cardealer_set_tex_query_array( $taxonomys, $_POST ); // phpcs:ignore WordPress.Security.NonceVerification $filter_query = new WP_Query( $filter_query_args ); $tot_result_filter = $filter_query->post_count; $filtered_makes = array(); if ( $filter_query->have_posts() ) { $filtered_makes = wp_get_object_terms( $filter_query->posts, 'car_make', array( 'orderby' => 'name', 'order' => 'ASC', 'fields' => 'slugs', ) ); foreach ( $taxonomys as $tax ) { $tax_args = array( 'orderby' => 'name', 'order' => 'ASC', 'fields' => 'all', ); $terms = wp_get_object_terms( $filter_query->posts, $tax, $tax_args ); foreach ( $terms as $tdata ) { if ( $tdata->taxonomy === $tax ) { $result_filter[ $tax ][] = array( 'post_id' => get_the_ID(), 'term_id' => $tdata->term_id, 'slug' => $tdata->slug, 'name' => $tdata->name, 'taxonomy' => $tdata->taxonomy, ); } } } wp_reset_postdata(); } $cardealer_ganerate_filter_box = cardealer_ganerate_filter_box( $taxonomys, $tax_query_arry, $result_filter ); $sort_order_asc_icon_class = apply_filters( 'cd_vehicle_sort_order_asc_icon_class', 'fa-solid fa-arrow-up-short-wide' ); $sort_order_desc_icon_class = apply_filters( 'cd_vehicle_sort_order_desc_icon_class', 'fa-solid fa-arrow-down-wide-short' ); $html = ''; if ( 'asc' === $data_order ) : $html .= '<a id="pgs_cars_order" data-order="desc" data-current_order="asc" href="javascript:void(0)"><i class="' . esc_attr( $sort_order_asc_icon_class ) . '"></i></a>'; endif; if ( 'desc' === $data_order ) : $html .= '<a id="pgs_cars_order" data-order="asc" data-current_order="desc" href="javascript:void(0)"><i class="' . esc_attr( $sort_order_desc_icon_class ) . '"></i></a>'; endif; if ( ! isset( $_POST['cfb'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification $vehicle_make = cdhl_vehicle_make_logos_html( $filtered_makes ); $attributs .= '<div class="submit-filters-btn"><a class="button" href="javascript:void(0);" id="submit_all_filters">' . esc_html__( 'Submit', 'cardealer' ) . '</a></div>'; $attributs .= '<div class="reset_filters-container"><a class="button reset_filters" href="javascript:void(0);" >' . esc_html__( 'Reset All Filters', 'cardealer' ) . '</a></div>'; $attributs .= '<span class="filter-loader"></span></div>'; $data = array( 'status' => 'success', 'all_filters' => $cardealer_ganerate_filter_box, 'data_html' => $data_html, 'featured_cars_count' => $featured_cars_count, 'featured_cars_found' => $featured_cars_found, 'featured_cars' => $featured_cars, 'pagination_html' => $pagination_html, 'order_html' => $html, 'tot_result' => $tot_result, 'tot_result_filter' => $tot_result_filter, 'found_posts' => $found_posts, 'vehicle_make' => $vehicle_make, ); } else { $data = array( 'status' => 'success', 'all_filters' => $cardealer_ganerate_filter_box, ); } return $data; } } if ( ! function_exists( 'cardealer_ganerate_filter_box' ) ) { /** * Filter box * * @param array $taxonomys get the taxonomys. * @param array $tax_query_arry get tex query array. * @param array $result_filter . */ function cardealer_ganerate_filter_box( $taxonomys, $tax_query_arry = array(), $result_filter = array() ) { global $car_dealer_options; $year_sorting = ( isset( $car_dealer_options['cars-year-sorting'] ) ) ? $car_dealer_options['cars-year-sorting'] : ''; /** * IF Request from custom search box Widgets */ $result_data = array(); $year_data = array(); /** * CFB used for custom filter box * */ if ( isset( $_POST['cfb'] ) && 'yes' === $_POST['cfb'] ) { // phpcs:ignore WordPress.Security.NonceVerification $attributs = ''; foreach ( $taxonomys as $tax ) { $taxonomy_name = get_taxonomy( $tax ); $label = $taxonomy_name->labels->menu_name; // Check filter array set. if ( ! empty( $tax_query_arry ) ) { $newarr = array(); if ( isset( $result_filter[ $tax ] ) ) { foreach ( $result_filter[ $tax ] as $term_data ) { if ( 'car_mileage' === $tax ) { $mileage_array = cardealer_get_mileage_array(); if ( isset( $t ) && 1 === $t ) { foreach ( $mileage_array as $mileage ) { $mileage_text = '≤ ' . cardealer_get_cars_formated_mileage( $mileage ); $result_data[ $tax ][] = array( $mileage => $mileage_text, ); } $t++; } } else { if ( ! in_array( $term_data['slug'], $newarr ) ) { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict $newarr[] = $term_data['slug']; $result_data[ $tax ][] = array( $term_data['slug'] => $term_data['name'], ); } if ( 'car_year' === $tax && $term_data['slug'] ) { $year_data[ $term_data['slug'] ] = $term_data['name']; } } } } } else { // When not set any filter. $terms = get_terms( array( 'taxonomy' => $tax, 'hide_empty' => true, ) ); foreach ( $terms as $tdata ) { $result_data[ $tax ][] = array( $tdata->slug => $tdata->name, ); if ( 'car_year' === $tax && $term_data['slug'] ) { $year_data[ $tdata->slug ] = $tdata->name; } } } } } else { /** * Without CFB * */ $tot_count = count( $taxonomys ); $i = 0; $t = 1; foreach ( $taxonomys as $tax ) { $flg = 0; $newarr = array(); if ( isset( $result_filter[ $tax ] ) ) { foreach ( $result_filter[ $tax ] as $term_data ) { if ( 'car_mileage' === $tax ) { $mileage_array = cardealer_get_mileage_array(); if ( 1 === $t ) { foreach ( $mileage_array as $mileage ) { $mileage_text = '≤ ' . cardealer_get_cars_formated_mileage( $mileage ); $result_data[ $tax ][] = array( $mileage => $mileage_text, ); } $t++; } } else { if ( ! in_array( $term_data['slug'], $newarr ) ) { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict $newarr[] = $term_data['slug']; $result_data[ $tax ][] = array( $term_data['slug'] => $term_data['name'], ); if ( 'car_year' === $tax && $term_data['slug'] ) { $year_data[ $term_data['slug'] ] = $term_data['name']; } } } } } } } /* https://gitlab.com/dinesh4monto/cardealer/-/issues/817 * if ( isset( $_POST['current_attr'] ) && isset( $result_data[ $_POST['current_attr'] ] ) ) { // phpcs:ignore WordPress.Security.NonceVerification unset( $result_data[ $_POST['current_attr'] ] ); // phpcs:ignore WordPress.Security.NonceVerification } */ if( ! empty( $year_data ) && $year_sorting ) { unset( $result_data[ 'car_year' ] ); if ( 'asc' === $year_sorting ) { ksort( $year_data ); } elseif( 'desc' === $year_sorting ) { krsort( $year_data ); } foreach( $year_data as $year_key => $year_val ){ $result_data[ 'car_year' ][] = array( $year_key => $year_val, ); } } return $result_data; } } if ( ! function_exists( 'cardealer_cars_pagination' ) ) { /** * Cars pagination * * @param bool $echo . * @param bool $query . * @param bool $paged . */ function cardealer_cars_pagination( $echo = true, $query = null, $paged = null ) { if ( null !== $query || ! empty( $query ) ) { $wp_query = $query; if ( null !== $paged ) { $paged = ( 0 === $paged ) ? 1 : $paged; } else { $paged = ( 0 === get_query_var( 'paged' ) ) ? 1 : get_query_var( 'paged' ); } } else { global $wp_query; $paged = ( 0 === get_query_var( 'paged' ) ) ? 1 : get_query_var( 'paged' ); } $big = 999999999; // need an unlikely integer. $pages = paginate_links( array( 'base' => str_replace( $big, '%#%', wp_specialchars_decode( esc_url( get_pagenum_link( $big ) ) ) ), 'format' => '?paged=%#%', 'current' => max( 1, $paged ), 'total' => $wp_query->max_num_pages, 'type' => 'array', 'prev_next' => true, 'prev_text' => esc_html__( '← Prev', 'cardealer' ), 'next_text' => esc_html__( 'Next →', 'cardealer' ), ) ); if ( is_array( $pages ) ) { $pagination = '<ul class="pagination">'; foreach ( $pages as $page ) { $pagination .= "<li>$page</li>"; } $pagination .= '</ul>'; $pagination .= '<span class="pagination-loader"></span>'; $pagination_escaped = wp_kses( $pagination, array( 'ul' => array( 'class' => true, ), 'li' => array( 'class' => true, ), 'span' => array( 'class' => true, 'aria-current' => true, ), 'a' => array( 'class' => true, 'href' => true, ), ) ); if ( $echo ) { // This variable has been safely escaped in the following file: cardealer/includes/cars_functions.php Line: 3277. echo $pagination_escaped; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped. } else { // This variable has been safely escaped in the following file: cardealer/includes/cars_functions.php Line: 3277. return $pagination_escaped; // phpcs:ignore WordPress.XSS.EscapeOutput.OutputNotEscaped. } } } } /** * Menu search box auto complate search */ add_action( 'wp_ajax_pgs_auto_complate_search', 'cardealer_auto_complate_search' ); add_action( 'wp_ajax_nopriv_pgs_auto_complate_search', 'cardealer_auto_complate_search' ); if ( ! function_exists( 'cardealer_auto_complate_search' ) ) { /** * Auto complate search */ function cardealer_auto_complate_search() { // Check for nonce security. $nonce = isset( $_POST['ajax_nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['ajax_nonce'] ) ) : ''; if ( ! wp_verify_nonce( $nonce, 'cardealer_auto_complate_search_nonce' ) ) { $data[] = array( 'status' => false, 'image' => '', 'link_url' => '', 'title' => '', 'msg' => '<div class="search-result-name">' . esc_html__( 'Unable to verify security nonce. Please try again later.', 'cardealer' ) . '</div>', ); echo wp_json_encode( $data ); exit(); } $data = array(); if ( ! isset( $_POST['search'] ) || empty( $_POST['search'] ) ) { $data[] = array( 'status' => false, 'image' => '', 'link_url' => '', 'title' => '', 'msg' => '<div class="search-result-name">' . esc_html__( 'No search term entered.', 'cardealer' ) . '</div>', ); echo wp_json_encode( $data ); exit(); } if ( ! isset( $_POST['seach_type'] ) || empty( $_POST['seach_type'] ) || ! in_array( $_POST['seach_type'], array( 'default', 'vehicles' ), true ) ) { $data[] = array( 'status' => false, 'image' => '', 'link_url' => '', 'title' => '', 'msg' => '<div class="search-result-name">' . esc_html__( 'Wrong search type. Please try again later.', 'cardealer' ) . '</div>', ); echo wp_json_encode( $data ); exit(); } $search_term = sanitize_text_field( wp_unslash( $_POST['search'] ) ); if ( 'default' === $_POST['seach_type'] ) { $posttype = cardealer_search_post_type(); $args = array( 'post_type' => $posttype, 'post_status' => 'publish', 'posts_per_page' => defined( 'PHP_INT_MAX' ) ? PHP_INT_MAX : -1, 's' => $search_term, ); $args = apply_filters_deprecated( 'cardealer_auto_complate_search_args', array( $args, $_POST ), '4.7.0', 'cardealer_autocomplate_default_search_args' ); $args = apply_filters( 'cardealer_autocomplate_default_search_args', $args, $_POST ); }elseif ( 'vehicles' === $_POST['seach_type'] ) { $_GET['s'] = $search_term; $args = cardealer_make_filter_wp_query( $_GET ); $args = apply_filters( 'cardealer_autocomplate_vehicles_search_args', $args, $_GET, $_POST ); } $query = new WP_Query( $args ); if ( $query->have_posts() ) { while ( $query->have_posts() ) : $query->the_post(); $pid = get_the_ID(); $car_img = ''; $class = 'no-image'; $ptype = get_post_type( $pid ); if ( 'cars' === $ptype ) { $image = cardealer_get_cars_image( 'cardealer-50x50', $pid ); $car_img = '<div class="search-result-image">' . $image . '</div>'; $class = ''; } else { if ( has_post_thumbnail( $pid ) ) { $thmb = get_the_post_thumbnail( $pid, 'cardealer-50x50' ); $car_img = '<div class="search-result-image">' . $thmb . '</div>'; $class = ''; } } $data[] = array( 'status' => true, 'image' => $car_img, 'link_url' => get_the_permalink(), 'title' => '<div class="search-result-name ' . $class . '">' . get_the_title() . '</div>', 'msg' => '', ); endwhile; wp_reset_postdata(); } else { $data[] = array( 'status' => false, 'image' => '', 'link_url' => '', 'title' => '', 'msg' => '<div class="search-result-name">' . esc_html__( 'No Results', 'cardealer' ) . '</div>', ); } echo wp_json_encode( $data ); exit(); } } /** * List page search box auto complate search filters and sidebar area */ add_action( 'wp_ajax_pgs_cars_list_search_auto_compalte', 'cars_list_search_auto_compalte' ); add_action( 'wp_ajax_nopriv_pgs_cars_list_search_auto_compalte', 'cars_list_search_auto_compalte' ); if ( ! function_exists( 'cars_list_search_auto_compalte' ) ) { /** * Search auto complate */ function cars_list_search_auto_compalte() { // Check for nonce security. $nonce = isset( $_POST['ajax_nonce'] ) ? sanitize_text_field( wp_unslash( $_POST['ajax_nonce'] ) ) : ''; if ( ! wp_verify_nonce( $nonce, 'pgs_cars_list_search_auto_compalte_nonce' ) ) { $data[] = array( 'status' => false, 'image' => '', 'link_url' => '', 'title' => '', 'msg' => '<div class="search-result-name">' . esc_html__( 'Something is wrong; please try again..!', 'cardealer' ) . '</div>', ); } else { if ( isset( $_POST['search'] ) && ! empty( $_POST['search'] ) ) { $data = array(); $search = trim( sanitize_text_field( wp_unslash( $_POST['search'] ) ) ); $_GET['s'] = $search; $args = cardealer_make_filter_wp_query( $_GET ); $query = new WP_Query( $args ); if ( $query->have_posts() ) { while ( $query->have_posts() ) : $query->the_post(); $pid = get_the_ID(); $car_img = ''; $class = 'no-image'; $ptype = get_post_type( $pid ); if ( 'cars' === $ptype ) { $image = cardealer_get_cars_image( 'cardealer-50x50', $pid ); $car_img = '<div class="search-result-image">' . $image . '</div>'; $class = ''; } else { if ( has_post_thumbnail( $pid ) ) { $thmb = get_the_post_thumbnail( $pid, 'cardealer-50x50' ); $car_img = '<div class="search-result-image">' . $thmb . '</div>'; $class = ''; } } $data[] = array( 'status' => true, 'image' => $car_img, 'link_url' => get_the_permalink(), 'title' => '<div class="search-result-name ' . $class . '">' . get_the_title() . '</div>', 'msg' => '', ); endwhile; wp_reset_postdata(); } else { $data[] = array( 'status' => false, 'image' => '', 'link_url' => '', 'title' => '', 'msg' => '<div class="search-result-name">' . esc_html__( 'No Results', 'cardealer' ) . '</div>', ); } } else { $data[] = array( 'status' => false, 'image' => '', 'link_url' => '', 'title' => '', 'msg' => '<div class="search-result-name">' . esc_html__( 'No Results', 'cardealer' ) . '</div>', ); } } echo wp_json_encode( $data ); exit(); } } if ( ! function_exists( 'cardealer_validate_google_captch' ) ) { /** * Validate google captch. * * @param string $captcha . */ function cardealer_validate_google_captch( $captcha ) { $secret_key = cardealer_get_goole_api_keys( 'secret_key' ); if ( empty( $secret_key ) ) { return array( 'success' => true ); } $response = array(); if ( isset( $_SERVER['REMOTE_ADDR'] ) ) { $response = wp_remote_get( 'https://www.google.com/recaptcha/api/siteverify?secret=' . $secret_key . '&response=' . $captcha . '&remoteip=' . sanitize_text_field( wp_unslash( $_SERVER['REMOTE_ADDR'] ) ), array( 'timeout' => 30 ) ); } if ( ! empty( $response ) && isset( $response['body'] ) ) { return json_decode( $response['body'], true ); } else { return array( 'success' => false ); } } } if ( ! function_exists( 'cardealer_get_goole_api_keys' ) ) { /** * Get google api * * @param string $key_type . */ function cardealer_get_goole_api_keys( $key_type = '' ) { global $car_dealer_options; $key = ''; $site_key = ( isset( $car_dealer_options['google_captcha_site_key'] ) && ! empty( $car_dealer_options['google_captcha_site_key'] ) ) ? $car_dealer_options['google_captcha_site_key'] : ''; $secret_key = ( isset( $car_dealer_options['google_captcha_secret_key'] ) && ! empty( $car_dealer_options['google_captcha_secret_key'] ) ) ? $car_dealer_options['google_captcha_secret_key'] : ''; if ( ( ! empty( $site_key ) && ! empty( $secret_key ) ) && 'site_key' === $key_type ) { $key = $site_key; } if ( ( ! empty( $site_key ) && ! empty( $secret_key ) ) && 'secret_key' === $key_type ) { $key = $secret_key; } return $key; } } if ( ! function_exists( 'cardealer_photoswipe' ) ) { /** * Photo swipe popup for cars */ function cardealer_photoswipe() { ?> <div class="pswp" tabindex="-1" role="dialog" aria-hidden="true"> <div class="pswp__bg"></div> <div class="pswp__scroll-wrap"> <div class="pswp__container"> <div class="pswp__item"></div> <div class="pswp__item"></div> <div class="pswp__item"></div> </div> <div class="pswp__ui pswp__ui--hidden"> <div class="pswp__top-bar"> <div class="pswp__counter"></div> <button class="pswp__button pswp__button--close" title="<?php esc_attr_e( 'Close (Esc)', 'cardealer' ); ?>"></button> <button class="pswp__button pswp__button--fs" title="<?php esc_attr_e( 'Toggle fullscreen', 'cardealer' ); ?>"></button> <button class="pswp__button pswp__button--zoom" title="<?php esc_attr_e( 'Zoom in/out', 'cardealer' ); ?>"></button> <div class="pswp__preloader"> <div class="pswp__preloader__icn"> <div class="pswp__preloader__cut"> <div class="pswp__preloader__donut"></div> </div> </div> </div> </div> <div class="pswp__share-modal pswp__share-modal--hidden pswp__single-tap"> <div class="pswp__share-tooltip"></div> </div> <button class="pswp__button pswp__button--arrow--left" title="<?php esc_attr_e( 'Previous (arrow left)', 'cardealer' ); ?>"> </button> <button class="pswp__button pswp__button--arrow--right" title="<?php esc_attr_e( 'Next (arrow right)', 'cardealer' ); ?>"> </button> <div class="pswp__caption"> <div class="pswp__caption__center"></div> </div> </div> </div> </div> <?php } } add_action( 'wp_footer', 'cardealer_photoswipe' ); add_action( 'admin_init', 'cardealer_remove_metabox' ); if ( ! function_exists( 'cardealer_remove_metabox' ) ) { /** * Remove metabox. */ function cardealer_remove_metabox() { remove_meta_box( 'tagsdiv-car_year', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_make', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_model', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_body_style', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_condition', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_mileage', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_transmission', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_drivetrain', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_engine', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_fuel_economy', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_exterior_color', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_interior_color', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_stock_number', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_vin_number', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_fuel_type', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_trim', 'cars', 'side' ); remove_meta_box( 'tagsdiv-car_features_options', 'cars', 'side' ); remove_meta_box( 'car_features_optionsdiv', 'cars', 'side' ); // Get all taxnomies for cars post type. $taxonomies_raw = get_object_taxonomies( 'cars' ); foreach ( $taxonomies_raw as $new_tax ) { $new_tax_obj = get_taxonomy( $new_tax ); if ( isset( $new_tax_obj->include_in_filters ) && true === (bool) $new_tax_obj->include_in_filters ) { if ( false === (bool) $new_tax_obj->hierarchical ) { remove_meta_box( "tagsdiv-{$new_tax}", 'cars', 'side' ); } else { remove_meta_box( "{$new_tax}div", 'cars', 'side' ); } } } } } if ( ! function_exists( 'cardealer_get_vehicles_taxonomies' ) ) { /** * Get vehicles taxonomies * * @param array $taxonomies_unset . * @param array $return_array_type . */ function cardealer_get_vehicles_taxonomies( $taxonomies_unset = array(), $return_array_type = 'val_to_key' ) { if ( ! empty( $taxonomies_unset ) ) { $unset_taxonomies = $taxonomies_unset; } else { $unset_taxonomies = array( 'car_features_options' ); } $taxonomies = get_object_taxonomies( 'cars' ); foreach ( $unset_taxonomies as $taxo ) { if ( array_search( $taxo, $taxonomies ) !== false ) { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict $key = array_search( $taxo, $taxonomies ); // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict unset( $taxonomies[ $key ] ); } } $taxonomy_array = array(); if ( 'val_to_key' === $return_array_type ) { // array( taxonomy_label => taxonomy_key ). foreach ( $taxonomies as $taxonomy ) { $tax_obj = get_taxonomy( $taxonomy ); $taxonomy_array[ $tax_obj->label ] = $taxonomy; } } else { // array( taxonomy_key => taxonomy_label ). foreach ( $taxonomies as $taxonomy ) { $tax_obj = get_taxonomy( $taxonomy ); $taxonomy_array[ $taxonomy ] = $tax_obj->label; } } /** * Filters the vehicle taxonomy array . * * @since 1.0 * * @param array $taxonomy_array A list of taxonomies with taxonomy slug to taxonomy label pair. * @visible true */ return apply_filters( 'cardealer_vehicles_taxonomies', $taxonomy_array ); } } if ( ! function_exists( 'cardealer_term_redirect' ) ) { /** * TAXONOMY REDIRECT CODE START * Function used to redirect page from 404 to car archive when term of the taxonomy is called in URL, But not available in taxonomy * If this is not used page will redirect to 404 when term(which is not available for taxonomy) called in URL. */ function cardealer_term_redirect() { global $wp_query; if ( $wp_query->is_404() ) { if ( isset( $wp_query->query['post_type'] ) && 'cars' === $wp_query->query['post_type'] ) { if ( isset( $wp_query->query['car_condition'] ) ) { $car_condition = strtolower( $wp_query->query['car_condition'] ); if ( in_array( $car_condition, array( 'used', 'certified', 'new', 'n', 'u', 'c' ) ) ) { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict add_filter( 'cardealer_page_title', 'cardealer_term_page_title' ); // Page Title . add_filter( 'cardealer_subtitle_title', 'cardealer_term_subtitle_title' ); // Sub Title . add_filter( 'document_title_parts', 'cardealer_vehicle_browser_title', 99 ); // Browser Title . add_filter( 'template_include', 'cardealer_term_template_redirect' ); // Redirect to archive-cars.php . } } } } } } add_action( 'wp', 'cardealer_term_redirect' ); if ( ! function_exists( 'cardealer_vehicle_browser_title' ) ) { /** * Vehicle browser title * * @param string $title . */ function cardealer_vehicle_browser_title( $title ) { $title_array = cardealer_get_vehicle_page_titles(); if ( ! empty( $title_array['title'] ) ) { $title['title'] = $title_array['title']; } return $title; } } if ( ! function_exists( 'cardealer_term_template_redirect' ) ) { /** * Term template redirect * * @param string $template . */ function cardealer_term_template_redirect( $template ) { $template = get_query_template( 'archive-cars' ); return $template; } } if ( ! function_exists( 'cardealer_term_page_title' ) ) { /** * Term page title * * @param string $title . */ function cardealer_term_page_title( $title ) { $title_array = cardealer_get_vehicle_page_titles(); if ( ! empty( $title_array['title'] ) ) { return $title_array['title']; } return $title; } } if ( ! function_exists( 'cardealer_term_subtitle_title' ) ) { /** * Term subtitle * * @param string $subtitle . */ function cardealer_term_subtitle_title( $subtitle ) { $subtitle_array = cardealer_get_vehicle_page_titles(); if ( ! empty( $subtitle_array['subtitle'] ) ) { return $subtitle_array['subtitle']; } return $subtitle; } } if ( ! function_exists( 'cardealer_get_vehicle_page_titles' ) ) { /** * Vehicle page titles */ function cardealer_get_vehicle_page_titles() { global $car_dealer_options; $titles = array( 'title' => '', 'subtitle' => '', ); // Theme option vehicle inventory page title. $cars_listing_title = ( isset( $car_dealer_options['cars-listing-title'] ) ) ? $car_dealer_options['cars-listing-title'] : ''; $page_title = ''; if ( isset( $car_dealer_options['cars_inventory_page'] ) && ! empty( $car_dealer_options['cars_inventory_page'] ) ) { $car_page = get_post( $car_dealer_options['cars_inventory_page'] ); $page_path = isset( $car_page->post_name ) ? $car_page->post_name : 'cars'; $page = get_page_by_path( $page_path ); if ( $page ) { $page_title = get_the_title( $page ); $titles['subtitle'] = get_post_meta( $page->ID, 'subtitle', true ); } } else { $page_title = $cars_listing_title; } if ( ! empty( $page_title ) ) { $title = $page_title; } else { $title = post_type_archive_title( '', false ); } $titles['title'] = $title; return $titles; } } if ( ! function_exists( 'cardealer_get_inv_list_style' ) ) { /** * Get inv list style */ function cardealer_get_inv_list_style() { global $car_dealer_options; $list_style = 'default'; if ( isset( $car_dealer_options['inv-list-style'] ) && ! empty( $car_dealer_options['inv-list-style'] ) ) { $list_style = $car_dealer_options['inv-list-style']; } return $list_style; } } if ( ! function_exists( 'cardealer_get_cars_image_src' ) ) { /** * TAXONOMY REDIRECT CODE END * * @param string $car_size . * @param bool $id . */ function cardealer_get_cars_image_src( $car_size = 'car_catalog_image', $id = null ) { if ( empty( $car_size ) ) { $car_size = 'car_catalog_image'; } global $post; $car_id = ( null !== $id ) ? $id : $post->ID; if ( function_exists( 'get_field' ) ) { $images = get_field( 'car_images', $car_id ); if ( ! empty( $images ) ) { $img_url = esc_url( $images[0]['sizes'][ $car_size ] ); } else { $img_url = cardealer_get_carplaceholder( $car_size, 'url' ); } } else { $img_url = cardealer_get_carplaceholder( $car_size, 'url' ); } return $img_url; } } if ( ! function_exists( 'cardealer_invenory_pg_vc_css' ) ) { /** * VC Style Sheets */ function cardealer_invenory_pg_vc_css() { global $car_dealer_options; $inventory_pg_id = (int) cardealer_get_current_post_id(); $front_page = (int) get_option( 'page_on_front' ); if ( isset( $car_dealer_options['cars_inventory_page'] ) && ! empty( $car_dealer_options['cars_inventory_page'] ) && (int) $car_dealer_options['cars_inventory_page'] === $front_page ) { $inventory_pg_id = $front_page; } if ( isset( $car_dealer_options['cars_inventory_page'] ) ) { if ( ! is_wp_error( $inventory_pg_id ) && (int) $car_dealer_options['cars_inventory_page'] === $inventory_pg_id ) { $shortcodes_custom_css = get_post_meta( $inventory_pg_id, '_wpb_shortcodes_custom_css', true ); if ( ! empty( $shortcodes_custom_css ) ) { $shortcodes_custom_css = wp_strip_all_tags( $shortcodes_custom_css ); wp_add_inline_style( 'cardealer-main', $shortcodes_custom_css ); } } } } } add_action( 'wp_enqueue_scripts', 'cardealer_invenory_pg_vc_css', 160 ); if ( ! function_exists( 'cardealer_list_layout_style_lazyload' ) ) { /** * List layout style lazyload * * @param string $layout . */ function cardealer_list_layout_style_lazyload( $layout ) { if ( is_author() && isset( $_GET['profile-tab'] ) && 'listing' === $_GET['profile-tab'] ) { return $layout; } $listing_layout = cardealer_get_vehicle_listing_page_layout(); if ( 'lazyload' === $listing_layout ) { $layout = 'view-grid'; } return $layout; } } add_filter( 'cardealer_list_layout_style', 'cardealer_list_layout_style_lazyload' ); add_action( 'init', function() { $listing_layout = cardealer_get_vehicle_listing_page_layout(); if ( 'lazyload' === $listing_layout ) { if ( isset( $_COOKIE['lay_style'] ) ) { setcookie( 'lay_style', 'view-grid', time() + ( 10 * 365 * 24 * 60 * 60 ) ); } } } ); if ( ! function_exists( 'cardealer_set_vehicle_list_view_type' ) ) { /** * Vehicle list view type * * @param string $cars_grid . */ function cardealer_set_vehicle_list_view_type( $cars_grid ) { if ( is_author() && isset( $_GET['profile-tab'] ) && 'listing' === $_GET['profile-tab'] ) { return $cars_grid; } $listing_layout = cardealer_get_vehicle_listing_page_layout(); if ( 'lazyload' === $listing_layout ) { return 'yes'; } return $cars_grid; } } add_filter( 'cardealer_vehicle_list_view_type', 'cardealer_set_vehicle_list_view_type' ); /** * Vehicle make logo html * * @param array $filtered_makes filtered makes. */ function cdhl_vehicle_make_logos_html( $filtered_makes ) { $make_widgets_html = array(); $make_widgets = ( isset( $_REQUEST['make_widgets'] ) && ! empty( $_REQUEST['make_widgets'] ) ) ? wp_unslash( $_REQUEST['make_widgets'] ) : array(); // phpcs:ignore WordPress.Security.NonceVerification, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized $make_generator = new CDHL_Vehicle_Make_Logos_Generator(); $car_makes = $make_generator->get_makes(); foreach ( $make_widgets as $widget => $widget_args ) { $make_widgets_html[ $widget ] = ''; if ( ! is_array( $car_makes ) || empty( $car_makes ) ) { continue; } $widget_args['include_makes'] = $filtered_makes; ob_start(); $make_generator->generate_makes( $widget_args ); $make_widgets_html[ $widget ] = ob_get_clean(); } return $make_widgets_html; } if ( ! function_exists( 'cd_sell_car_online' ) ) { /** * Ajax call for buy vehicle */ function cd_sell_car_online() { global $car_dealer_options; if ( isset( $car_dealer_options['demo_mode'] ) ) { $demo_mode = (bool) $car_dealer_options['demo_mode']; if ( $demo_mode ) { $response = array( 'status' => 'error', 'msg' => esc_html__( "The site is currently in demo mode, This feature is disabled.", 'cardealer' ), ); wp_send_json( $response ); die; } } if ( ! isset( $_POST['ajax_nonce'] ) || ! wp_verify_nonce( sanitize_text_field( wp_unslash( $_POST['ajax_nonce'] ) ), 'cd_sell_car_online_ajax' ) ) { $response = array( 'status' => 'error', 'msg' => esc_html__( 'Unable to verify security nonce. Please try again.', 'cardealer' ), ); } else { $response = array( 'status' => 'error', 'msg' => esc_html__( 'Something went wrong!', 'cardealer' ), ); $vehicle_id = isset( $_POST['vehicle_id'] ) ? intval( $_POST['vehicle_id'] ) : ''; if ( $vehicle_id ) { if ( class_exists( 'WooCommerce' ) ) { $price_arr = cardealer_get_car_price_array( $vehicle_id ); if ( ! empty( $price_arr ) ) { $final_price = $price_arr['regular_price']; if ( 0 < $price_arr['sale_price'] ) { $final_price = $price_arr['sale_price']; } } update_post_meta( $vehicle_id, '_price', $final_price ); $checkout_url = wc_get_checkout_url() . '?add-to-cart=' . $vehicle_id; $response = array( 'status' => 'success', 'msg' => '', 'redirect_url' => $checkout_url, ); wp_send_json( $response ); } } } wp_send_json( $response ); die; } } add_action( 'wp_ajax_cd_sell_car_online', 'cd_sell_car_online' ); add_action( 'wp_ajax_nopriv_cd_sell_car_online', 'cd_sell_car_online' ); function cardealer_vehicle_listing_mobile_filter_location() { global $car_dealer_options; return ( isset( $car_dealer_options['vehicle_listing_mobile_filter_location'] ) && ! empty( $car_dealer_options['vehicle_listing_mobile_filter_location'] ) ) ? $car_dealer_options['vehicle_listing_mobile_filter_location'] : 'off-canvas'; } function cardealer_get_featured_vehicles_list_style() { global $car_dealer_options; $list_style = ( isset( $car_dealer_options['featured_vehicles_list_style'] ) && ! empty( $car_dealer_options['featured_vehicles_list_style'] ) ) ? $car_dealer_options['featured_vehicles_list_style'] : 'grid'; $cars_list_layout_style = cardealer_get_cars_list_layout_style(); if ( 'view-list' === $cars_list_layout_style ) { $list_style = 'grid'; } return apply_filters( 'cardealer_get_featured_vehicles_list_style', $list_style ); } function cardealer_get_related_vehicles( $vehicle_id = '' ) { global $car_dealer_options; $related_data = false; if ( empty( $vehicle_id ) ) { $vehicle_id = get_the_ID(); } $related_args = array( 'post_type' => 'cars', 'posts_status' => 'publish', 'posts_per_page' => 10, 'post__not_in' => array( $vehicle_id ), ); $show_empty_source = ( isset( $car_dealer_options['related_vehicles_source_empty'] ) && filter_var( $car_dealer_options['related_vehicles_source_empty'], FILTER_VALIDATE_BOOLEAN ) ); $related_source = ( isset( $car_dealer_options['related_vehicles_source'] ) && ! empty( $car_dealer_options['related_vehicles_source'] ) ) ? $car_dealer_options['related_vehicles_source'] : 'car_make'; $related_terms = get_the_terms( $vehicle_id, $related_source ); $related_terms_found = false; if ( $related_terms && ! is_wp_error( $related_terms ) && ! empty( $related_terms ) && is_array( $related_terms ) && isset( $related_terms[0] ) && (int) $related_terms[0]->count > 1 ) { $related_terms_found = true; $cars_cat_slug = $related_terms[0]->slug; $related_args['tax_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query array( 'taxonomy' => $related_source, 'field' => 'slug', 'terms' => $cars_cat_slug, ), ); } if ( ! $related_terms_found && ! $show_empty_source ) { return $related_data; } $related_args = apply_filters( 'cardealer/single-vehicle/related-vehicles-query/args', $related_args, $vehicle_id ); $related_query = new WP_Query( $related_args ); if ( $related_query->have_posts() ) { $related_data = array( 'post_count' => $related_query->post_count, 'query' => $related_query, ); } return $related_data; } function cardealer_get_vehicle_360_images( $vehicle_id = '' ) { $images = false; if ( empty( $vehicle_id ) ) { $vehicle_id = get_the_ID(); } if ( $vehicle_id && ! empty( $vehicle_id ) ) { $acf_images = get_field( '360_images', $vehicle_id ); if( $acf_images ) { $images = array(); foreach( $acf_images as $image ) { if ( is_array( $image ) && isset( $image['url'] ) && ! empty( $image['url'] ) ) { $images[] = $image['url']; } } } $images = ( ! empty( $images ) ) ? $images : false; } return $images; } function cardealer_vehicle_360_view_button_html( $images = array(), $args = array() ) { if ( empty( $images ) ) { return; } $defaults = array( 'popup_id' => sanitize_html_class( uniqid( 'vehicle-view360-popop-', true ) ), 'button_title' => esc_html__( '360° View', 'cardealer' ), ); $args = wp_parse_args( $args, $defaults ); ?> <a class="btn-open-vehicle-view360" href="#<?php echo esc_attr( $args['popup_id'] ); ?>" title="<?php echo esc_attr( get_the_title() ); ?>"><i class="fas fa-custom-view360"></i> <?php echo esc_html( $args['button_title'] ); ?></a> <div class="vehicle-view360-wrapper"> <div id="<?php echo esc_attr( $args['popup_id'] ); ?>" class="vehicle-view360-popop mfp-hide" style="--vehicle-view360-popop-width:900px;"> <?php wp_enqueue_script( 'magnific-popup' ); cardealer_vehicle_360_view_images_html( $images ); ?> </div> </div> <?php } function cardealer_vehicle_360_view_images_html( $images = array() ) { if ( empty( $images ) ) { return; } $images_quoted = array_map( function($value) { return '"' . esc_url( $value ). '"'; }, $images ); $images_arr = '['.implode(',', $images_quoted ).']'; global $cardealer_vehicle_360_view_button_html_initiated; if ( ! $cardealer_vehicle_360_view_button_html_initiated ) { ?> <script>window.CI360 = { notInitOnLoad: true }</script> <?php $cardealer_vehicle_360_view_button_html_initiated = true; } wp_enqueue_script( 'js-cloudimage-360-view' ); wp_enqueue_script( 'cardealer_view360' ); ?> <div class="vehicle-view360 cloudimage-360" data-image-list-x='<?php echo $images_arr; ?>' data-bottom-circle-offset="2" data-keys> <button class="cloudimage-360-prev"><i class="fas fa-angle-left" aria-hidden="true"></i></button> <button class="cloudimage-360-next"><i class="fas fa-angle-right" aria-hidden="true"></i></button> <div class="cloudimage-360-placeholder"> <img class="cloudimage-360-placeholder-img" src="<?php echo esc_url( $images[0] ); ?>" alt="360-view-placeholder"> <div class="cloudimage-360-placeholder-icon cloudimage-360-view-360-icon"></div> </div> </div> <?php }
Copyright ©2k19 -
Hexid
|
Tex7ure