/
www
/
wwwroot
/
alo88.autos
/
wp-content
/
plugins
/
seo-by-rank-math-pro
/
includes
/
modules
/
local-seo
/
shortcodes
/
Upload File
HOME
<?php /** * The Map shortcode Class. * * @since 1.0.1 * @package RankMath * @subpackage RankMathPro * @author Rank Math <support@rankmath.com> */ namespace RankMathPro\Local_Seo; use RankMath\Schema\DB; defined( 'ABSPATH' ) || exit; /** * Map class. */ class Map { /** * Shortcode Instance. * * @var Location_Shortcode */ public $shortcode; /** * Get Address Data. * * @param Location_Shortcode $shortcode Location_Shortcode Instance. * @param array $locations Locations data. * @return string */ public function get_data( $shortcode, $locations ) { $this->shortcode = $shortcode; $atts = $shortcode->atts; $options = [ 'map_style' => $atts['map_style'], 'allow_zoom' => $atts['allow_zoom'], 'zoom_level' => $atts['zoom_level'], 'allow_dragging' => $atts['allow_dragging'], 'show_clustering' => $atts['show_marker_clustering'], 'show_infowindow' => $atts['show_infowindow'], ]; $terms_data = []; foreach ( $locations as $location ) { $schema = DB::get_schemas( $location->ID ); if ( empty( $schema ) ) { continue; } $schema = current( $shortcode->replace_variables( $schema ) ); if ( empty( $schema['geo']['latitude'] ) || empty( $schema['geo']['longitude'] ) ) { continue; } $options['locations'][ $location->ID ] = [ 'content' => $this->get_infobox_content( $location->ID, $schema ), 'lat' => $schema['geo']['latitude'], 'lng' => $schema['geo']['longitude'], ]; if ( ! empty( $atts['show_category_filter'] ) && 'map' === $atts['type'] ) { $terms = get_the_terms( $location->ID, 'rank_math_location_category' ); if ( ! is_wp_error( $terms ) && ! empty( $terms ) ) { $terms_data = array_merge( $terms_data, $terms ); $options['locations'][ $location->ID ]['terms'] = wp_list_pluck( $terms, 'term_id' ); } } } if ( empty( $options['locations'] ) ) { return; } wp_enqueue_script( 'rank-math-local' ); $width = ! empty( $atts['map_width'] ) ? $atts['map_width'] : '100%'; $height = ! empty( $atts['map_height'] ) ? $atts['map_height'] : '500px'; $style = sprintf( 'style="width: %s; height: %s"', $width, $height ); ob_start(); ?> <div class="rank-math-local-map-wrapper"> <div class="rank-math-local-map" data-map-options="<?php echo esc_attr( wp_json_encode( $options ) ); ?>" <?php printf( 'style="width: %s; height: %s"', esc_attr( $width ), esc_attr( $height ) ); ?>></div> <?php if ( ! empty( $terms_data ) ) { echo '<select id="rank-math-select-category">'; echo '<option value="">' . esc_html__( 'Select Category', 'rank-math-pro' ) . '</option>'; foreach ( $terms_data as $term ) { echo '<option value="' . esc_attr( $term->term_id ) . '">' . esc_html( $term->name ) . '</option>'; } echo '</select>'; } ?> </div> <?php return ob_get_clean(); } /** * Get Infobox Content. * * @param int $location_id The Location ID. * @param array $schema Schema Data. * @return string */ public function get_infobox_content( $location_id, $schema ) { return '<div class="rank-math-infobox-wrapper"> <h5><a href="' . esc_url( get_the_permalink( $location_id ) ) . '">' . esc_html( get_the_title( $location_id ) ) . '</a></h5> <p>' . $this->shortcode->address->get_data( $this->shortcode, $schema ) . '</p> </div>'; } }