Пример #1
0
    /**
     * WP Geo Location Inner Custom Box
     */
    function wpgeo_location_inner_custom_box()
    {
        global $wpgeo, $post;
        $wp_geo_options = get_option('wp_geo_options');
        $search = '';
        $coord = get_wpgeo_post_coord($post->ID);
        $title = get_post_meta($post->ID, WPGEO_TITLE_META, true);
        $marker = get_post_meta($post->ID, WPGEO_MARKER_META, true);
        $settings = WPGeo::get_post_map_settings($post->ID);
        $wpgeo_map_settings_zoom = '';
        $wpgeo_map_settings_type = '';
        $wpgeo_map_settings_centre = '';
        $wpgeo_map_settings_zoom_checked = '';
        $wpgeo_map_settings_type_checked = '';
        $wpgeo_map_settings_centre_checked = '';
        $markers_menu = array('selected' => $marker, 'echo' => 0, 'name' => 'wp_geo_marker', 'show_option_none' => '(' . __('Use Default', 'wp-geo') . ')', 'option_none_value' => '');
        if (!empty($settings['zoom'])) {
            $wpgeo_map_settings_zoom = $settings['zoom'];
            $wpgeo_map_settings_zoom_checked = checked(true, true, false);
        } elseif ($wp_geo_options['save_post_zoom'] == 'Y') {
            $wpgeo_map_settings_zoom = $wp_geo_options['save_post_zoom'];
            $wpgeo_map_settings_zoom_checked = checked(true, true, false);
        }
        if (!empty($settings['type'])) {
            $wpgeo_map_settings_type = $settings['type'];
            $wpgeo_map_settings_type_checked = checked(true, true, false);
        } elseif ($wp_geo_options['save_post_map_type'] == 'Y') {
            $wpgeo_map_settings_type = $wp_geo_options['save_post_map_type'];
            $wpgeo_map_settings_type_checked = checked(true, true, false);
        }
        if (!empty($settings['centre'])) {
            $wpgeo_map_settings_centre = $settings['centre'];
            $wpgeo_map_settings_centre_checked = checked(true, true, false);
        } elseif ($wp_geo_options['save_post_centre_point'] == 'Y') {
            $wpgeo_map_settings_centre = $wp_geo_options['save_post_centre_point'];
            $wpgeo_map_settings_centre_checked = checked(true, true, false);
        }
        $map_html = $this->map->get_map_html(array('classes' => array('wp_geo_map', 'wpgeo_map_admin_post'), 'styles' => array('width' => '100%', 'height' => 300, 'padding' => '0px', 'margin' => '0px'), 'content' => __('Loading Google map, please wait...', 'wp-geo')));
        // Use nonce for verification
        echo '<input type="hidden" name="wpgeo_location_noncename" id="wpgeo_location_noncename" value="' . wp_create_nonce('wpgeo_edit_post') . '" />';
        // The actual fields for data entry
        echo '<table cellpadding="3" cellspacing="5" class="form-table">
			<tr>
				<td colspan="2">' . $map_html . '</td>
			</tr>
			<tr>
				<th scope="row">' . esc_html__('Search for location', 'wp-geo') . '</th>
				<td><input name="wp_geo_search" type="text" size="45" id="wp_geo_search" value="' . esc_attr($search) . '" placeholder="' . esc_attr__('e.g. town, postcode or address', 'wp-geo') . '" />
					<input type="hidden" name="wp_geo_base_country_code" id="wp_geo_base_country_code" value="' . esc_attr(apply_filters('wpgeo_base_country_code', '')) . '" />
					<span class="submit"><input type="button" id="wp_geo_search_button" class="button" name="wp_geo_search_button" value="' . esc_attr__('Search', 'wp-geo') . '" /></span></td>
			</tr>
			<tr>
				<th scope="row">' . esc_html__('Co-ordinates', 'wp-geo') . '</th>
				<td><input name="wp_geo_latitude" type="text" size="25" id="wp_geo_latitude" value="' . esc_attr($coord->latitude()) . '" placeholder="' . esc_attr__('Latitude', 'wp-geo') . '" />,
					<input name="wp_geo_longitude" type="text" size="25" id="wp_geo_longitude" value="' . esc_attr($coord->longitude()) . '" placeholder="' . esc_attr__('Longitude', 'wp-geo') . '" /><br />
					<a href="#" class="button button-small wpgeo-clear-location-fields">' . esc_html__('clear location', 'wp-geo') . '</a> <a href="#" class="button button-small wpgeo-centre-location">' . esc_html__('centre location', 'wp-geo') . '</a>
				</td>
			</tr>
			<tr>
				<th scope="row">' . esc_html__('Marker Title', 'wp-geo') . ' <small>(' . esc_html__('optional', 'wp-geo') . ')</small></th>
				<td><input name="wp_geo_title" type="text" size="25" style="width:100%;" id="wp_geo_title" value="' . esc_attr($title) . '" /></td>
			</tr>
			<tr>
				<th scope="row">' . esc_html__('Marker Image', 'wp-geo') . '</th>
				<td>' . $wpgeo->markers->dropdown_markers($markers_menu) . '</td>
			</tr>
			<tr>
				<th scope="row">' . esc_html__('Map Settings', 'wp-geo') . '</th>
				<td>
					<label for="wpgeo_map_settings_zoom"><input type="checkbox" name="wpgeo_map_settings_zoom" id="wpgeo_map_settings_zoom" value="' . esc_attr($wpgeo_map_settings_zoom) . '" ' . $wpgeo_map_settings_zoom_checked . ' /> ' . esc_html__('Save custom map zoom for this post', 'wp-geo') . '</label><br />
					<label for="wpgeo_map_settings_type"><input type="checkbox" name="wpgeo_map_settings_type" id="wpgeo_map_settings_type" value="' . esc_attr($wpgeo_map_settings_type) . '" ' . $wpgeo_map_settings_type_checked . ' /> ' . esc_html__('Save custom map type for this post', 'wp-geo') . '</label><br />
					<label for="wpgeo_map_settings_centre"><input type="checkbox" name="wpgeo_map_settings_centre" id="wpgeo_map_settings_centre" value="' . esc_attr($wpgeo_map_settings_centre) . '" ' . $wpgeo_map_settings_centre_checked . ' /> ' . esc_html__('Save map centre point for this post', 'wp-geo') . '</label>
				</td>
			</tr>
			' . apply_filters('wpgeo_edit_post_map_fields', '', $post->ID) . '
		</table>';
    }
Пример #2
0
 /**
  * The Content
  * Output Map placeholders in the content area if set to automatically.
  *
  * @param string $content HTML content.
  * @return string HTML content.
  */
 function the_content($content = '')
 {
     global $wpgeo, $post, $wpdb;
     $new_content = '';
     if ($wpgeo->show_maps() && !is_feed()) {
         $wp_geo_options = get_option('wp_geo_options');
         $maptype = empty($wp_geo_options['google_map_type']) ? 'G_NORMAL_MAP' : $wp_geo_options['google_map_type'];
         $mapzoom = $wp_geo_options['default_map_zoom'];
         $coord = get_wpgeo_post_coord($post->ID);
         $title = get_wpgeo_title($post->ID);
         $marker = get_post_meta($post->ID, WPGEO_MARKER_META, true);
         $settings = WPGeo::get_post_map_settings($post->ID);
         $mymaptype = $maptype;
         if (isset($settings['type']) && !empty($settings['type'])) {
             $mymaptype = $settings['type'];
         }
         $mymapzoom = $mapzoom;
         if (isset($settings['zoom']) && is_numeric($settings['zoom'])) {
             $mymapzoom = $settings['zoom'];
         }
         // Need a map?
         if ($coord->is_valid_coord()) {
             $map = new WPGeo_Map($post->ID);
             // Add point
             $marker_large = empty($marker) ? 'large' : $marker;
             $icon = apply_filters('wpgeo_marker_icon', $marker_large, $post, 'post');
             $map->add_point($coord, array('icon' => $icon, 'title' => $title, 'link' => get_permalink($post->ID)));
             $map->setMapZoom($mymapzoom);
             $map->setMapType($mymaptype);
             if (!empty($settings['centre'])) {
                 $centre = explode(',', $settings['centre']);
                 if (is_array($centre) && count($centre) == 2) {
                     $map->setMapCentre($centre[0], $centre[1]);
                 } else {
                     $map->setMapCentre($coord->latitude(), $coord->longitude());
                 }
             } else {
                 $map->setMapCentre($coord->latitude(), $coord->longitude());
             }
             $map_types = $this->control_type_option_strings($wp_geo_options);
             foreach ($map_types as $map_type) {
                 $map->addMapType($map_type);
             }
             if ($wp_geo_options['show_map_scale'] == 'Y') {
                 $map->showMapScale(true);
             }
             if ($wp_geo_options['show_map_overview'] == 'Y') {
                 $map->showMapOverview(true);
             }
             if ($wp_geo_options['show_streetview_control'] == 'Y') {
                 $map->show_streetview_control(true);
             }
             $map->setMapControl($wp_geo_options['default_map_control']);
             $wpgeo->maps->add_map($map);
             $new_content .= $map->get_map_html(array('classes' => array('wp_geo_map'), 'styles' => array('width' => $wp_geo_options['default_map_width'], 'height' => $wp_geo_options['default_map_height'])));
             $new_content = apply_filters('wpgeo_the_content_map', $new_content);
         }
         // Add map to content
         $show_post_map = apply_filters('wpgeo_show_post_map', $wp_geo_options['show_post_map'], $post->ID);
         // Show at top/bottom of post
         if ($show_post_map == 'TOP') {
             $content = $new_content . $content;
         } elseif ($show_post_map == 'BOTTOM') {
             $content = $content . $new_content;
         }
     }
     return $content;
 }
Пример #3
0
/**
 * Get WP Geo Post Static Map
 * Gets the HTML for a static post map.
 *
 * @param   int    $post_id  (optional) Post ID.
 * @param   array  $query    (optional) Parameters.
 * @return  string           HTML.
 */
function get_wpgeo_post_static_map($post_id = 0, $query = null)
{
    global $post, $wpgeo;
    $post_id = absint($post_id);
    $post_id = $post_id > 0 ? $post_id : $post->ID;
    // Show Map?
    if (!$post_id || is_feed() || !$wpgeo->show_maps() || !$wpgeo->checkGoogleAPIKey()) {
        return '';
    }
    $coord = get_wpgeo_post_coord($post_id);
    if (!$coord->is_valid_coord()) {
        return '';
    }
    // Fetch wp geo options & post settings
    $wp_geo_options = get_option('wp_geo_options');
    $settings = WPGeo::get_post_map_settings($post_id);
    // Options
    $options = wp_parse_args($query, array('width' => trim($wp_geo_options['default_map_width'], 'px'), 'height' => trim($wp_geo_options['default_map_height'], 'px'), 'maptype' => $wp_geo_options['google_map_type'], 'zoom' => $wp_geo_options['default_map_zoom']));
    // Can't do percentage sizes so abort
    if (strpos($options['width'], '%') !== false || strpos($options['height'], '%') !== false) {
        return '';
    }
    // Map Options
    $zoom = isset($settings['zoom']) && is_numeric($settings['zoom']) ? $settings['zoom'] : $options['zoom'];
    $map_type = !empty($settings['type']) ? $settings['type'] : $options['maptype'];
    $center_coord = new WPGeo_Coord($coord->latitude(), $coord->longitude());
    if (!empty($settings['centre'])) {
        $center = explode(',', $settings['centre']);
        $maybe_center_coord = new WPGeo_Coord($center[0], $center[1]);
        if ($maybe_center_coord->is_valid_coord()) {
            $center_coord = $maybe_center_coord;
        }
    }
    // Map
    $map = new WPGeo_Map();
    $map->set_map_centre($center_coord);
    $map->set_map_zoom($zoom);
    $map->set_map_type($map_type);
    $map->set_size($options['width'], $options['height']);
    $map->add_point($coord);
    $url = $wpgeo->api->static_map_url($map);
    return sprintf('<img id="wp_geo_static_map_%s" src="%s" class="wp_geo_static_map" />', $post_id, esc_url($url));
}