46.227638, "lng" => 2.213749]; // france
if (isset($mp_settings_coordinates_default))
$mp_coordinates_default = $mp_settings_coordinates_default;
$mp_icon_color = "#ba197a";
$mp_icon_color_back = "#ffffff99";
if (isset($mp_settings_icon_color))
$mp_icon_color = $mp_settings_icon_color;
if (isset($mp_settings_icon_color_back))
$mp_icon_color_back = $mp_settings_icon_color_back;
$mp_icon_stroke_width = 6;
if (isset($mp_settings_icon_stroke_width))
$mp_icon_stroke_width = $mp_settings_icon_stroke_width;
/**
* 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__), '', '', false);
wp_enqueue_style('mp_style_info_windows', plugins_url('styles/mp_info_windows.css', __FILE__), '', '', false);
wp_enqueue_style('mp_style_zoom', plugins_url('styles/mp_zoom.css', __FILE__), '', '', false);
wp_enqueue_script('mp_info_window', plugins_url('scripts/mp_info_window.js', __FILE__), '', '', false);
wp_enqueue_script('mp_errors', plugins_url('scripts/mp_errors.js', __FILE__), '', '', false);
wp_enqueue_script('mp_create_markers', plugins_url('scripts/mp_create_markers.js', __FILE__), '', '', false);
wp_enqueue_script('mp_draw_clusters', plugins_url('scripts/mp_draw_clusters.js', __FILE__), '', '', false);
wp_enqueue_script('mp_marker_clusterer', $marker_clusterer, '', '', 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);
/*
pays
ville
categorie
*/
$pays = array();
mp_add_to_scripts($pays);
$mp_api_script = '
';
foreach ($pays as $loc) {
$mp_api_script .= '
';
$mp_api_script .= $loc;
$mp_api_script .= '
';
}
$mp_api_script .= '
';
return $mp_api_script;
}
add_shortcode('lejourduprof_map', 'mp_add_div');
/**
* errors map
*/
function mp_errors_map() {
$errors = "";
$count = 0;
$get_posts_args = array(
'numberposts' => -1,
'post_status' => 'publish',
//'post_status' => 'draft',
'post_type' => 'post',
);
$posts = get_posts($get_posts_args);
foreach ($posts as $post) {
$id = $post->ID;
$coordinate = get_field('coordinates', $id);
if ($coordinate == null) {
$count++;
$errors .= '
erreur :
- article : "';
$errors .= $post->post_title . '"
- adresse : "';
$errors .= get_field('adresse', $id) . ', ';
$errors .= get_field('ville', $id) . ', ';
$errors .= get_field('pays', $id) . '';
$errors .= '"
';
}
}
$errors = "nombre d'erreurs : " . $count . "
" . $errors;
return $errors;
}
add_shortcode('ljdp_errors_map', 'mp_errors_map');
/**
* when a post is saved or published or updated,
* find 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 );
/**
* trying to prevent publication with message if bad country address
*/
// // notice on post edit :
// // https://developer.wordpress.org/block-editor/how-to-guides/notices/
// // https://developer.wordpress.org/block-editor/how-to-guides/javascript/loading-javascript/
// // https://developer.wordpress.org/block-editor/reference-guides/components/notice/https://developer.wordpress.org/block-editor/reference-guides/components/notice/
// // modals : https://developer.wordpress.org/block-editor/reference-guides/components/modal/
//
// // https://www.wpbeginner.com/wp-tutorials/how-to-add-admin-notices-in-wordpress/
// // https://digwp.com/2016/05/wordpress-admin-notices/
// function my_notice() {
// //echo '
// //echo '
// //echo '
// //echo '
// // echo '
// //
// // ';
//
// mp_console_log("\n get values:");
// foreach ($_GET as $key => $value) {
// mp_console_log(" " . $key . ": " . $value);
// }
// $screen = get_current_screen();
// mp_console_log("\n screen values:");
// foreach ($screen as $key => $value) {
// mp_console_log(" " . $key . ": " . $value);
// }
// }
// add_action( 'admin_notices', 'my_notice');
//
// // https://wordpress.stackexchange.com/questions/42013/prevent-post-from-being-published-if-custom-fields-not-filled
// // https://developer.wordpress.org/reference/hooks/save_post/
// function my_publish_check($id, $post, $update) {
//
// // is doing autosaving ?
// if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
// return;
//
// // is post creation ?
// if (!$update)
// return;
//
// // if this is a revision, get real post ID
// if ( $parent_id = wp_is_post_revision( $id ) )
// $id = $parent_id;
//
// // is the user allowed to edit the post or page ?
// if ( !current_user_can( 'edit_post', $id ) )
// return;
//
// // is not being published ?
// if ($post->post_status != "publish")
// return;
//
// $prevent_publish= true; // set to true if data was invalid
// if ($prevent_publish) {
//
// // unhook this function to prevent indefinite loop
// remove_action('save_post', 'my_save_post');
//
// // update the post to change post status
// wp_update_post(array('ID' => $id, 'post_status' => 'draft'));
//
// // re-hook this function again
// add_action('save_post', 'my_save_post');
// }
// }
// add_action( 'save_post_post', 'my_publish_check', 10, 3);
//
// function publish_error() {
// wp_enqueue_script('mp_publish_error',
// plugins_url('scripts/mp_publish_error.js', __FILE__),
// array( 'wp-data' ),
// '',
// true
// );
// }
// add_action( 'enqueue_block_editor_assets', 'publish_error');
//
// // https://wordpress.stackexchange.com/questions/42013/prevent-post-from-being-published-if-custom-fields-not-filled
// // https://wordpress.stackexchange.com/questions/15546/dont-publish-custom-post-type-post-if-a-meta-data-field-isnt-valid
// function my_redirect_location($location, $post_id) {
//
// // if post was published...
// if (isset($_POST['publish'])){
//
// // obtain current post status
// $status = get_post_status( $post_id );
//
// // the post was 'published', but if it is still a draft, display draft message (10).
// if($status=='draft') {
// $location = add_query_arg('message', 10, $location);
// }
// }
//
// return $location;
// }
// add_filter('redirect_post_location', 'my_redirect_location', 10, 2);
//
// //function test1($id, $post) {
// // mp_console_log("save_post - " . $post->post_status);
// //}
// //add_action( 'save_post', 'test1', 10, 2 );
// /*
// modification rapide, publie -> brouillon : 1 - draft
// modification rapide, brouillon -> brouillon : 1 - draft
// modification rapide, brouillon -> publie : 1 - publish
// add post : 1 - auto-draft
// modification, publie -> brouillon : 2 - draft
// modification, brouillon -> brouillon : 2 - draft
// modification, brouillon -> publie : 2 - publish
// */
//
// //function test2($id, $post) {
// // mp_console_log("publish_post - " . $post->post_status);
// //}
// //add_action( 'publish_post', 'test2', 10, 2 );
// /*
// modification rapide, publie -> brouillon : /
// modification rapide, brouillon -> brouillon : /
// modification rapide, brouillon -> publie : 1 - publish
// add post : /
// modification, publie -> brouillon : /
// modification, brouillon -> brouillon : /
// modification, brouillon -> publie : 2 - publish
// */
?>