Wordpress: Synchronisation de deux champs ACF / Texte ---> Google Map

Petit nouveau ! | 1 Messages

20 févr. 2023, 00:08

J'ai un site WordPress sur lequel je scrappe des offres d'emplois depuis un autre site et les insère dans des posts.

Je souhaite implanter la localisation des emplois dans un champ Google Map de Advanced Custom Field, mais malheureusement, le format des données de localisation scrappé (text) ne convient pas pour un champ Google Map.

À défaut de pouvoir envoyer directement la localisation scrappé dans mon champ Google Map, j'ai décider d'envoyer la localisation scrappé dans un champ de type text "job_s_location" et de convertir cette localisation en géocode pour l'envoyer par la suite à mon champ Google Map "job_location_field" .

Pour être plus clair:

Je souhaite que, à chaque fois qu'une donnée est entrée dans "job_s_location" (Texte), elle soit automatiquement transférée sous un format de géolocalisation dans "job_location_field" (Google Map).

J'ai essayé avec la fonction ci-dessous, mais rien ne fonctionne la localisation reste dans le champs de texte, et ne s'intègre pas à mon champ Google map.


Code : Tout sélectionner

function update_job_location_field( $post_id ) { // Vérifiez si le post est un job post if ( get_post_type( $post_id ) !== 'job' ) { return; } // Récupérer le nom de la ville et le nom du pays à partir du champ job_s_location $location = get_field( 'job_s_location', $post_id ); $city_name = $location['city']; $country_name = $location['country']; // Création de l'adresse pour l'appel de l'API Google Maps $address = $city_name . ', ' . $country_name; // Appel de l'API Google Maps pour récupérer les coordonnées de la ville $ur/l = '////////////////////////adresse-api-google///////////////////////:=' . urlencode( $address ) . '&key=MA-CLÉ-API'; $response = file_get_contents( $url ); $data = json_decode( $response ); if ( $data->status === 'OK' ) { // Enregistrement des coordonnées géographiques dans le champ job_location_field $lat = $data->results[0]->geometry->location->lat; $lng = $data->results[0]->geometry->location->lng; update_field( 'job_location_field', array( 'lat' => $lat, 'lng' => $lng ), $post_id ); } } add_action( 'acf/save_post', 'update_job_location_field', 20 );
( J'ai volontairement erroné l'adresse de l'API Google Maps pour pouvoir entrer ce code sur le site PhpFrance qui n'accepte pas les URL externe )



J'aurais besoin de votre aide pour trouver une solution à mon problème. Est-il possible d'automatiser le transfert de données du champ "job_s_location" au champ "job_location_field" en utilisant PHP ou une autre méthode? Si oui, comment puis-je le faire ?

Merci beaucoup pour votre aide.

NB: Si vous connaissez un plugin de scrapping qui possède une fonctionnalité de Géolocation, je suis également preneur. Merci

Mammouth du PHP | 2703 Messages

20 févr. 2023, 00:20

"mais rien ne fonctionne"
c'est bien vague et il n'y a nul part dans le code du code montrant une tentative de debuguer, en mettant des echo pour voir où cela passe, en affichant le contenu de variables ...