Files
DOCKER_wordpress/srcs/plugins/map_prof/map_prof_hooks.php
2022-11-05 14:42:38 +01:00

106 lines
2.9 KiB
PHP

<?php
/*
Plugin Name: map_prof
Plugin URI:
Description: add/remove locations on map at publication/deletion of posts
Author: hugogogo
Version: 1.0.0
Author URI:
*/
/**
* inclusions :
*/
include_once(dirname(__FILE__) . '/mp_console_log.php');
require_once(dirname(__FILE__) . '/mp_url_api.php');
require_once(dirname(__FILE__) . '/mp_add_to_scripts.php');
require_once(dirname(__FILE__) . '/mp_get_coordinates.php');
require_once(dirname(__FILE__) . '/settings/mp_required.php');
require_once(dirname(__FILE__) . '/settings/mp_optionnals.php');
/**
* global variables :
*/
$mp_icon_base_url = '/wp-content/plugins/map_prof/images/';
$mp_icon_url = $mp_icon_base_url . $mp_icon_file;
$mp_icon_cluster_url = $mp_icon_base_url . $mp_icon_cluster_file;
$mp_icon_size = [40, 40];
if (isset($mp_settings_icon_size)) {
if (is_array($mp_settings_icon_size)) {
if (count($mp_settings_icon_size) === 2) {
if ( is_numeric($mp_settings_icon_size[0]) && is_numeric($mp_settings_icon_size[1]) ) {
$mp_icon_size = $mp_settings_icon_size;
}
}
}
}
$mp_icon_color = "#ba197a";
if (isset($mp_settings_icon_color))
$mp_icon_color = $mp_settings_icon_color;
$mp_cluster_size_factor = 2.5;
if (isset($mp_settings_cluster_size_factor))
$mp_cluster_size_factor = $mp_settings_cluster_size_factor;
/**
* to add a tag, like defer or async, to a script
*/
function mp_tag_scripts($tag, $handle) {
if ('mp_googe_api' === $handle)
return str_replace(' src="', ' async src="', $tag);
return $tag;
}
add_filter('script_loader_tag', 'mp_tag_scripts', 10, 2);
/**
* when 'shortcode' found in page, enqueue scripts and styles,
* run php script, and replace shortcode by return value
*/
function mp_add_div() {
// https://developers.google.com/maps/documentation/javascript/marker-clustering
$marker_clusterer = "https://unpkg.com/@googlemaps/markerclusterer/dist/index.min.js";
wp_enqueue_style( 'mp_style', plugins_url('styles/mp_style.css', __FILE__), '', '', '');
wp_enqueue_script('mp_errors_maps', plugins_url('scripts/mp_errors_map.js', __FILE__), '', '', true);
wp_enqueue_script('mp_marker_clusterer', $marker_clusterer, ['mp_errors_maps'], '', true);
wp_enqueue_script('mp_init_map', plugins_url('scripts/mp_init_map.js', __FILE__), ['mp_marker_clusterer'],'', true);
wp_enqueue_script('mp_google_api', mp_url_api(), ['mp_init_map'], '', true);
mp_add_to_scripts();
$mp_api_script = '<div id="ljdp_map"></div>';
return $mp_api_script;
}
add_shortcode('lejourduprof_map', 'mp_add_div');
/**
* when a post is published, check its coordinates
*/
function post_published_coordinates($id, $post) {
$coordinates = mp_get_coordinates($id);
if ( ! add_post_meta( $id, 'coordinates', $coordinates, true ) ) {
update_post_meta( $id, 'coordinates', $coordinates );
}
}
add_action( 'publish_post', 'post_published_coordinates', 10, 2 );
?>