"Vous avez été déconnecté, merci de relancer l'application", ))); } // on récupère les variables POST $id_post = htmlspecialchars($_POST['id_post'],ENT_QUOTES)?:0; // n'a une valeur que s'il s'agit d'une édition, si pas de valeur ou valeur=0 alors c'est une création $timestamp_livraison = htmlspecialchars($_POST['timestamp_livraison'],ENT_QUOTES); $nom_destinataire = htmlspecialchars($_POST['nom_destinataire'],ENT_QUOTES); $lat = htmlspecialchars($_POST['lat'],ENT_QUOTES); $lng = htmlspecialchars($_POST['lng'],ENT_QUOTES); $numero = htmlspecialchars($_POST['numero'],ENT_QUOTES); $rue = htmlspecialchars($_POST['rue'],ENT_QUOTES); $cp = htmlspecialchars($_POST['cp'],ENT_QUOTES); $ville = htmlspecialchars($_POST['ville'],ENT_QUOTES); $departement = htmlspecialchars($_POST['departement'],ENT_QUOTES); $pays = htmlspecialchars($_POST['pays'],ENT_QUOTES); $pays_code = htmlspecialchars($_POST['pays_code'],ENT_QUOTES); // s'il s'agit d'une édition, on vérifie que l'utilisateur a bien le droit d'éditer ce post // ici on utilise un champ ACF "utilisateur" pour vérifier qu'il correspond bien à l'ID de l'utilisateur, mais d'autres méthodes peuvent être envisagées, comme la propriété par auteur native de WP, etc if ($id_post) { if (get_field('utilisateur', $id_post)!=$user_id) { die(json_encode(array( 'error' => "Vous avez n'avez pas le droit de modifier ce post", ))); } } // on crée ou on édite le post CTP type "livraison" puis on en récupère l'ID (qui ne change pas dans le cas d'une édition) $id_post = wp_insert_post(array( 'ID' => $id_post, 'post_type' => 'livraison', 'post_status' => 'publish', 'post_title' => 'Livraison '.get_field('nom', $user_id).' '.get_field('prenom', $user_id).' pour '.$nom_destinataire, )); // on met à jours les différents ACF update_field('utilisateur', $user_id, $id_post); update_field('date', date('Y-m-d', $timestamp_livraison), $id_post); // un ACF type date s'enregistre sous le format 'Y-m-d', un type date et heure serait sous la forme 'Y-m-d H:i:s' update_field('nom_destinataire', $nom_destinataire, $id_post); update_field('adresse', array( // ACF type Google Maps, voir https://pastebin.com/hjudHjUq 'address' => $numero.' '.$rue.', '.$cp.' '.$ville.', '.$pays, 'lat' => $lat, 'lng' => $lng, 'street_number' => $numero, 'street_name' => $rue, 'post_code' => $cp, 'city' => $ville, 'state' => $departement, 'country' => $pays, 'country_short' => $pays_code, ), $id_post); // fonction de mesure de la distance entre deux points géographiques, pas utilisée ici mais laissée en exemple car elle peut servir function distance($lat1, $lng1, $lat2, $lng2) { return rad2deg(acos(sin(deg2rad($lat1))*sin(deg2rad($lat2))+cos(deg2rad($lat1))*cos(deg2rad($lat2))*cos(deg2rad($lng1-$lng2))))*111189.577; }