oont-contents/plugins/jetpack/modules/geo-location.php
2025-02-08 15:10:23 +01:00

97 lines
2.4 KiB
PHP

<?php
/**
* Module: geo-location
*
* @package automattic/jetpack
*/
/**
* Adds support for geo-location features.
*/
require_once __DIR__ . '/geo-location/class.jetpack-geo-location.php';
/**
* Geo-location shortcode callback for display of location data associated with a post.
*
* Usage with current global $post:
* [geo-location]
*
* Usage with specific post ID:
* [geo-location post=5]
*
* @param array $attributes Shortcode attributes.
*/
function jetpack_geo_shortcode( $attributes ) {
$attributes = shortcode_atts(
array(
'post' => null,
'id' => null,
),
$attributes
);
return jetpack_geo_get_location( $attributes['post'] ? $attributes['post'] : $attributes['id'] );
}
add_shortcode( 'geo-location', 'jetpack_geo_shortcode' );
/**
* Get the geo-location data associated with the supplied post ID, if it's available
* and marked as being available for public display. The returned array will contain
* "latitude", "longitude" and "label" keys.
*
* If you do not supply a value for $post_id, the global $post will be used, if
* available.
*
* @param integer|null $post_id Post ID.
*
* @return array|null
*/
function jetpack_geo_get_data( $post_id = null ) {
$geo = Jetpack_Geo_Location::init();
if ( ! $post_id ) {
$post_id = $geo->get_post_id();
}
$meta_values = $geo->get_meta_values( $post_id );
if ( ! $meta_values['is_public'] || ! $meta_values['is_populated'] ) {
return null;
}
return array(
'latitude' => $meta_values['latitude'],
'longitude' => $meta_values['longitude'],
'label' => $meta_values['label'],
);
}
/**
* Display the label HTML for the geo-location information associated with the supplied
* post ID.
*
* If you do not supply a value for $post_id, the global $post will be used, if
* available.
*
* @param integer|null $post_id Post ID.
*
* @return void
*/
function jetpack_geo_display_location( $post_id = null ) {
echo jetpack_geo_get_location( $post_id ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Escaped in `Jetpack_Geo_Location::get_location_label`.
}
/**
* Return the label HTML for the geo-location information associated with the supplied
* post ID.
*
* If you do not supply a value for $post_id, the global $post will be used, if
* available.
*
* @param integer|null $post_id Post ID.
*
* @return string
*/
function jetpack_geo_get_location( $post_id = null ) {
return Jetpack_Geo_Location::init()->get_location_label( $post_id );
}