Function Reference: create_marker_jason_of_posts

Summary

Creates marker json using given $post object.

Global Values

$wpdb
(object) (required) WordPress Database object.

Default: None
$map_jason
(array) (required) Map data in json format.

Default: None
$add_post_in_marker_array
(bool) (required) Displays posts in marker array when the value is true.

Default: None
$geodir_cat_icons
(array) (required) Category icons array. syntax: array( ‘category name’ => ‘icon url’).

Default: None
$gd_marker_sizes
(array) (required) Array of the marker icons sizes.

Default: None

Package

GeoDirectory

Parameters

$post
(null|WP_Post) (required) Post object.

Default: None

Change Log

Since: 1.0.0

1.5.0 Converts icon url to HTTPS if HTTPS is active.

1.6.1 Marker icons size added.

Filters

‘geodir_create_marker_jason_of_posts’ [Line: 107]

Source File

create_marker_jason_of_posts() is located in geodirectory-functions/map-functions/map_functions.php [Line: 51]

Source Code

function create_marker_jason_of_posts($post)
{
    global $wpdb, $map_jason, $add_post_in_marker_array, $geodir_cat_icons, $gd_marker_sizes;

    if (!empty($post) && isset($post->ID) && $post->ID > 0 && (is_main_query() || $add_post_in_marker_array)) {

        if(isset($map_jason[$post->ID])){return null;}

        $srcharr = array("'", "/", "-", '"', '\\');
        $replarr = array("′", "⁄", "–", "“", '');

        $default_category = isset($post->default_category) ? $post->default_category : geodir_get_post_meta($post->ID,'default_category');

        $geodir_cat_icons = geodir_get_term_icon();
        $icon = !empty($geodir_cat_icons) && isset($geodir_cat_icons[$default_category]) ? $geodir_cat_icons[$default_category] : '';

        $post_title = $post->post_title;
        $title = str_replace($srcharr, $replarr, $post_title);

        if (is_ssl()) {
            $icon = str_replace("http:","https:",$icon );
        }
        
        if ($icon != '') {
            $gd_marker_sizes = empty($gd_marker_sizes) ? array() : $gd_marker_sizes;
            
            if (isset($gd_marker_sizes[$icon])) {
                $icon_size = $gd_marker_sizes[$icon];
            } else {
                $icon_size = geodir_get_marker_size($icon);
                $gd_marker_sizes[$icon] = $icon_size;
            }               
        } else {
            $icon_size = array('w' => 36, 'h' => 45);
        }

        $post_latitude = isset($post->post_latitude) ? $post->post_latitude : geodir_get_post_meta($post->ID,'post_latitude');
        $post_longitude = isset($post->post_longitude) ? $post->post_longitude : geodir_get_post_meta($post->ID,'post_longitude');


        $post_json = '{"id":"' . $post->ID
                     . '","t": "' . $title
                     . '","lt": "' . $post_latitude
                     . '","ln": "' . $post_longitude
                     . '","mk_id":"' . $post->ID . '_' . $default_category
                     . '","i":"' . $icon
                     . '","w":"' . $icon_size['w']
                     . '","h":"' . $icon_size['h'] . '"}';

        /**
         * Filter the json data when creating output for post json marker..
         *
         * @since 1.5.7
         * @param string $post_json JSON representation of the post marker info.
         * @param object $post The post object.
         */
        $post_map_json = apply_filters('geodir_create_marker_jason_of_posts',$post_json, $post);

        // only assign it if it has a value
        if($post_map_json){
            $map_jason[$post->ID] = $post_map_json;
        }

    }
}