Logo de mon site internet Cédric Chevillard comprenant un fond bleu et mon visage au centre

Immofacile et WordPressDuo gagnant pour votre agence immobilière

Vous êtes ici :

Accueil

Immofacile et WordPress

Bienvenue sur ma page dédiée à Immofacile !

Découvrez comment ce logiciel peut transformer la gestion de votre agence immobilière en optimisant votre site WordPress.

Vous recherchez un prestataire pour mettre en place Immofacile sur votre site WordPress, n’hésitez pas à me contacter ici :

Table des matières

Immofacile, un logiciel dédié à l’immobilier

Immofacile est un logiciel spécialement conçu pour les professionnels de l’immobilier.

Né de la volonté de simplifier et optimiser la gestion des agences immobilières, Immofacile est le fruit de l’expertise d’AC3 dans les technologies immobilières.

Immofacile a été créé pour combler les lacunes des solutions existantes, en collaborant étroitement avec des professionnels du secteur.

AC3 a ainsi conçu un outil intuitif et puissant qui répond aux besoins quotidiens des agents immobiliers. Depuis sa création, ce logiciel évolue constamment, intégrant les dernières technologies pour rester à la pointe du marché.

Immofacile : Pourquoi c’est le meilleur choix pour votre agence immobilière ?

Une gestion simplifiée des biens immobiliers

Immofacile centralise toutes les informations relatives à vos biens immobiliers en un seul endroit.

Vous pouvez facilement ajouter, modifier ou supprimer des listings, et toutes les données sont synchronisées en temps réel.

Cela vous permet de gagner un temps précieux et d’éviter les erreurs de gestion.

Une visibilité accrue grâce à une publication multi-supports

Avec Immofacile, vous pouvez publier vos annonces sur plusieurs plateformes simultanément.

Que ce soit sur votre site internet, les portails immobiliers, ou les réseaux sociaux, vos biens bénéficient d’une visibilité maximale, attirant ainsi plus de clients potentiels.

Un suivi des clients optimisé

Le logiciel offre un système de gestion des contacts intégré qui vous permet de suivre les interactions avec vos clients et prospects.

Vous pouvez enregistrer les demandes, programmer des rendez-vous, et envoyer des emails personnalisés, ce qui améliore la relation client et augmente les chances de conclure des ventes.

Des rapports et des statistiques détaillés

Immofacile fournit des rapports détaillés sur la performance de vos annonces et de votre agence.

Vous pouvez suivre le nombre de vues, les demandes de renseignements, et d’autres métriques importantes pour évaluer et ajuster vos stratégies marketing.

Un support client réactif et efficace

En optant pour Immofacile, vous bénéficiez d’un support client de qualité.

L’équipe d’AC3 est disponible pour vous aider à résoudre les problèmes, répondre à vos questions et vous fournir des conseils pour tirer le meilleur parti de leur logiciel.

Une solution évolutive adaptée à votre croissance

Immofacile est conçu pour s’adapter à la croissance de votre agence immobilière.

Que vous gériez quelques biens ou des centaines, le logiciel peut évoluer avec vous, offrant toujours les mêmes niveaux de performance et de fiabilité.

Le logiciel immofacile en images

Immofacile facilite l’intégration de vos biens sur votre site internet

Une présence en ligne efficace est essentielle pour toute agence immobilière souhaitant attirer de nouveaux clients et promouvoir ses biens.

Immofacile d’AC3 facilite grandement l’intégration de vos biens immobiliers sur votre site internet, notamment grâce à la mise à disposition d’un fichier XML mis à jour trois fois par jour.

Voici comment cette fonctionnalité peut transformer la gestion de votre site web immobilier.

Intégration automatique des annonces

Immofacile permet une intégration automatique de vos annonces immobilières sur votre site internet grâce à un fichier XML.

Ce fichier, généré par le logiciel, contient toutes les informations nécessaires sur vos biens : descriptions détaillées, photos, vidéos, caractéristiques, prix, et bien plus encore.

La mise à jour régulière de ce fichier XML garantit que toutes vos annonces sont toujours actuelles, sans nécessiter d’intervention manuelle de votre part.

Mise à jour trois fois par jour

La mise à jour du fichier XML trois fois par jour est une fonctionnalité clé d’Immofacile.

Cela signifie que vos annonces immobilières sont actualisées en temps réel, reflétant les nouvelles propriétés disponibles, les modifications de prix, ou les biens vendus ou loués.

Cette fréquence de mise à jour assure que les informations sur votre site internet sont toujours précises et à jour, ce qui est crucial pour attirer et fidéliser vos visiteurs.

Simplification de la gestion des annonces

Avec Immofacile, la gestion de vos annonces devient beaucoup plus simple.

Vous n’avez plus besoin de mettre à jour manuellement chaque bien immobilier sur votre site internet.

Le fichier XML se charge de tout, synchronisant automatiquement les informations depuis Immofacile vers votre site web.

Cela vous fait gagner un temps précieux et réduit le risque d’erreurs humaines, vous permettant de vous concentrer sur d’autres aspects de votre activité.

Amélioration de la visibilité en ligne

Grâce à la mise à jour fréquente et automatique des annonces, vos biens immobiliers bénéficient d’une visibilité optimale en ligne.

Les visiteurs de votre site internet peuvent voir les dernières offres et les informations les plus récentes, ce qui augmente leurs chances de trouver un bien qui les intéresse.

Une visibilité accrue des annonces se traduit souvent par un taux de conversion plus élevé, c’est-à-dire plus de contacts et de transactions conclues.

Documentation et support technique

Pour faciliter l’intégration du fichier XML, Immofacile met à disposition une documentation détaillée (disponible ici).

Cette documentation explique comment configurer et utiliser le fichier XML, avec des exemples concrets et des conseils pratiques.

De plus, le support technique d’AC3 est toujours disponible pour vous assister en cas de besoin, garantissant une mise en œuvre sans accroc.

Optimisation pour le référencement (SEO)

En plus de simplifier l’intégration des annonces, le fichier XML d’Immofacile contribue également à améliorer le référencement (SEO) de votre site internet.

En ayant des annonces régulièrement mises à jour avec des descriptions détaillées et des informations complètes, votre site est mieux positionné dans les résultats des moteurs de recherche.

Cela augmente la visibilité de votre site et attire davantage de visiteurs potentiels.

Déléguer la mise en place de la liaison entre votre site WordPress et Immofacile ?

Je propose un service de création de site internet immobilier alors si vous souhaitez me confier la mise en place de la liaison entre votre site WordPress et Immofacile. 👉

Sinon, pour les plus téméraires, voici un guide pour intégrer Immofacile dans WordPress. 👇

Guide pour intégrer Immofacile dans WordPress

Avant d’attaquer, il faut que vous ayez des connaissances de base dans WordPress et que vous disposiez d’un site WordPress déjà installé.

Et si vous vous demandez pourquoi choisir WordPress ? C’est parce que tout simplement ce CMS offre une flexibilité et une extensibilité inégalées.

Maintenant place au guide.

Installation de l’extension ACF

J’imagine que vous connaissez déjà ACF ou en avez entendu parler, mais je préfère vous réexpliquer son utilité. Il s’agit d’une extension WordPress incontournable dès lors que vous souhaitez créer de nouveaux types de publication.

ACF, ou Advanced Custom Fields, permet de créer des types de publication personnalisés. Par défaut, WordPress propose par exemple les pages et les articles, mais avec ACF, vous pouvez ajouter d’autres types.

Vous pouvez également créer des taxonomies, c’est-à-dire de nouveaux filtres pour trier vos contenus.

ACF permet d’ajouter des champs personnalisés à presque tous les éléments de WordPress. Ces champs permettent de stocker des informations spécifiques et d’enrichir vos annonces.

Vous pouvez utiliser ACF en mode gratuit, bien que cela limite le nombre de champs disponibles. L’installation se fait comme toute autre extension WordPress, soit par l’upload du fichier ZIP, soit directement via le répertoire des extensions.

Pour retrouver cette extension, il suffit de saisir « wp engine » dans la barre de recherche des extensions.

Avec ACF maintenant installé, nous sommes prêts à configurer nos types de publication, taxonomies et champs personnalisés pour intégrer les annonces immobilières d’Immofacile sur votre site WordPress.

Création du type de publication "Bien"

L’étape 1 consiste à créer le nouveau type de publication « Bien ». Pour ce faire, il suffit d’aller dans « ACF > Types de publication > Ajouter (bouton en haut de la page) ». Le nouvel onglet « ACF » a été ajouté après l’installation de l’extension.

Ensuite, vous n’avez plus qu’à suivre ces étapes :

Vous venez de créer votre nouveau type de publication. Vous pouvez maintenant le voir dans le menu d’administration, prêt à être utilisé pour gérer vos biens immobiliers.

Onglet "Bien" dans le menu WordPress

Création des taxonomies pour les filtres (facultatif)

Passons maintenant aux taxonomies. Pour rappel, cette partie n’est pas obligatoire, mais elle vous permettra de créer différentes pages selon des filtres, comme les villes. Si vous n’en voyez pas la nécessité, vous pouvez passer à la partie suivante.

Pour créer les taxonomies, il faut aller dans « ACF > Taxonomies » et cliquer sur « Ajouter » (bouton en haut de la page). Ensuite, voici les étapes à suivre pour créer autant de filtres que vous souhaitez :

Vous venez de créer votre nouvelle taxonomie. Elle apparaît désormais dans le menu d’administration et est prête à être utilisée pour gérer et filtrer vos biens immobiliers.

Onglet "Bien" dans le menu WordPress après avoir créé les taxonomies
Pour ce cas j'avais créé 3 taxonomies (statuts, types, villes)

Création des champs ACF pour votre type de publication

La dernière étape avec ACF consiste à créer les différents champs pour vos biens immobiliers. Cette étape dépendra de vos besoins spécifiques et des informations que vous souhaitez afficher pour chaque bien.

Pour la création, allez dans : « ACF > Groupes de champs » et cliquer sur « Ajouter » (bouton en haut de la page).

Pour illustrer, je vais vous faire une démonstration d’un des cas que j’ai déjà mis en place dans un projet.

Besoin d'un coup de main pour configurer ACF de manière optimale et spécifique à vos besoins ?

Voici à quoi ressemble votre bien lorsque vous créez un nouveau listing avec tous les champs ACF configurés :

Mise en place de tache CRON pour automatiser la mise à jour de vos biens

Dans cette section, nous allons aborder une partie plus technique de l’intégration d’Immofacile : la mise en place d’une tâche CRON pour automatiser la mise à jour de vos biens.

Cette opération nécessite des compétences en codage, en particulier en PHP.

Avant ça, petit rappel, une tâche CRON permet d’automatiser des actions répétitives à intervalles réguliers. 

Étape 1 : créer la tâche CRON

Pour commencer, nous allons ajouter la tâche CRON dans votre thème enfant WordPress. Voici les étapes à suivre :

Ouvrez le fichier functions.php de votre thème enfant. Si vous n’avez pas de thème enfant, il est recommandé d’en créer un pour éviter que vos modifications ne soient écrasées lors des mises à jour du thème parent.

Ajoutez le code suivant pour planifier la tâche CRON :

				
					if ( ! wp_next_scheduled( 'immofacile_update_event' ) ) {
    // La tache se déroule tous les jours à 02:00 du matin
    wp_schedule_event( strtotime('tomorrow 2:00'), 'daily' 'immofacile_update_event' );
}

// Créer une action qui sera appelée par la tâche CRON
add_action( 'immofacile_update_event', 'immofacile_update_function' );

function immofacile_update_function() {
  // Le code de mise à jour des biens
}
				
			

Dans ce code, « wp_schedule_event » planifie la tâche CRON pour qu’elle s’exécute toutes les heures. L’action « immofacile_update_event » est liée à la fonction « immofacile_update_function » qui contiendra le code pour mettre à jour les biens.

Étape 2 : le code de mise à jour des biens

Maintenant que la tâche CRON est planifiée, nous devons ajouter le code qui sera exécuté lors de son déclenchement.

Ce code doit être placé dans la fonction « immofacile_update_function » .

Voici un exemple de ce à quoi cette fonction pourrait ressembler :

				
					// Ajouter une tâche CRON personnalisée
if ( ! wp_next_scheduled( 'immofacile_update_event' ) ) {
  wp_schedule_event( time(), 'hourly', 'immofacile_update_event' );
}

// Créer une action qui sera appelée par la tâche CRON
add_action( 'immofacile_update_event', 'immofacile_update_function' );

function immofacile_update_function() {
    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, 'https://clients.immo-facile.com/office20/XXXXXXXXX/cache/export.xml');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');

    $xmlstr = curl_exec($ch);
    curl_close($ch);

    $xml = json_decode(json_encode( simplexml_load_string($xmlstr, 'SimpleXMLElement', LIBXML_NOCDATA )));

    $yesterday = (new DateTime())->setTime(0,0,0,0)->sub(new DateInterval('P2D'));

    $biens_existants = [];

    foreach ($xml->BIEN as $bien) {

        try {         
            $titre = $bien->INTITULE->FR;
            $immofacile_aff_id = $bien->INFO_GENERALES->AFF_ID;
            $immofacile_maj = DateTime::createFromFormat('d/m/Y', $bien->INFO_GENERALES->DATE_MAJ);

            $biens_existants[] = $immofacile_aff_id;

            // Si le bien a été mis à jour hier
            // A commenter lors du premier lancement
            if ($immofacile_maj <= $yesterday) {
                continue;
            }

            // Si il s'agit uniquement de maison
            if (!property_exists($bien, 'MAISON')) {
                continue;
            }

            // Vérification qu'il s'agit bien d'une vente
            if (!property_exists($bien, 'VENTE')) {
                continue;
            }

            $maison = $bien->MAISON;
            $vente = $bien->VENTE;
            $ville = clean_cdata($bien->LOCALISATION->VILLE);

            // On récupère la taxonomie ou on la crée
            $term = term_exists($ville, "ville_cat");
            if ($term) {
                $term_id = $term['term_id'];
            } else {
                $resultat = wp_insert_term(
                    $ville,
                    "ville_cat"
                );

                if (is_wp_error($resultat)) {
                    continue;
                } else {
                    $term_id = $resultat['term_id'];
                }
            }

            $cat_ville = $term_id;

            // Récupération des différentes informations
            $description_laterale_1 = "<strong>Informations générales</strong>";
            $description_laterale_1 .= "<br>Type de bien : " . (isset($maison) ? 'Maison' : 'Appartement');
            $description_laterale_1 .= "<br>Type de transaction : " . (isset($location) ? 'À louer' : "À vendre");
            $description_laterale_1 .= "<br><br><strong>Localisation</strong>";
            $description_laterale_1 .= "<br>Ville : " . (clean_cdata($bien->LOCALISATION->VILLE) !== null ? clean_cdata($bien->LOCALISATION->VILLE) : "NC");
            $description_laterale_1 .= "<br>Code postal : " . (clean_cdata($bien->LOCALISATION->CODE_POSTAL) !== null ? clean_cdata($bien->LOCALISATION->CODE_POSTAL) : "NC");

            if (property_exists($bien->LOCALISATION->PROXIMITE, 'BUS')) $description_laterale_1 .= "<br>Accès Bus : " . $bien->LOCALISATION->PROXIMITE->BUS . ' min';
            if (property_exists($bien->LOCALISATION->PROXIMITE, 'TRAMWAY')) $description_laterale_1 .= "<br>Accès Tramway : " . $bien->LOCALISATION->PROXIMITE->TRAMWAY . ' min';

            $description_laterale_1 .= "<br><br><strong>Aspects financiers</strong>";
            $prix = $vente->PRIX_NET;
            $description_laterale_1 .= "<br>Prix : " . (isset($vente->PRIX_NET) ? $vente->PRIX_NET . " EUR" : "NC");
            $description_laterale_1 .= "<br>Taxe Foncière : " . (isset($vente->TAXE_FONCIERE) ? $vente->TAXE_FONCIERE . " EUR" : "NC");
            $description_laterale_1 .= "<br><br><strong>Copropriété</strong>";
            $description_laterale_1 .= "<br>Bien en copropriété : " . (isset($bien->ALUR->COPROPRIETE) ? $bien->ALUR->COPROPRIETE : "NC");
            if ($bien->ALUR->COPROPRIETE == "Oui") {
                $description_laterale_1 .= "<br>Nb Lots Copropriété : " . (clean_cdata($bien->ALUR->NB_LOTS) !== null && clean_cdata($bien->ALUR->NB_LOTS) != "{}" ? clean_cdata($bien->ALUR->NB_LOTS) : "NC");
                $description_laterale_1 .= "<br>Dont lots d’habitation : " . (clean_cdata($bien->ALUR->NB_LOTS_HAB) !== null && clean_cdata($bien->ALUR->NB_LOTS_HAB) != "{}" ? clean_cdata($bien->ALUR->NB_LOTS_HAB) : "NC");
                $description_laterale_1 .= "<br>Charges annuelles (ALUR) : " . (clean_cdata($bien->ALUR->CHARGES_ANNUELLES) !== null && clean_cdata($bien->ALUR->CHARGES_ANNUELLES) !== 0 ? clean_cdata($bien->ALUR->CHARGES_ANNUELLES) . " EUR" : "NC");
                $description_laterale_1 .= "<br>Procédures diligentées : " . (clean_cdata($bien->ALUR->NOM_PROCEDURE) !== null && clean_cdata($bien->ALUR->NOM_PROCEDURE) != "{}" ? clean_cdata($bien->ALUR->NOM_PROCEDURE) : "NC");
            }

            $superficie = $maison->SURFACE_HABITABLE;
            $surface_carrez = $maison->SURFACE_CARREZ;
            $surface_terrasse = $maison->SURFACE_TERRASSE;
            $jardin = clean_cdata($maison->JARDIN);
            $annee_construction = clean_cdata($maison->ANNEE_CONSTRUCTION);
            $neuf_ancien = clean_cdata($maison->NEUF_ANCIEN);
            $standing = clean_cdata($maison->STANDING);
            $etat_general = clean_cdata($maison->ETAT_GENERAL);
            $vis_a_vis = clean_cdata($maison->VISA_VIS);
            $etat_exterieur = clean_cdata($maison->ETAT_EXTERIEUR);
            $fenetre = clean_cdata($maison->FENETRE);
            $volets = clean_cdata($maison->VOLETS);
            $nb_piece = $maison->NBRE_PIECES;
            $chambres = $maison->NBRE_CHAMBRES;
            $salle_bains = $maison->NBRE_SALLE_BAIN;
            $salle_eau = $maison->NBRE_SALLE_EAU;
            $wc = $maison->NBRE_WC;
            $cuisine = $maison->CUISINE;
            $sejour_double = $maison->SEJOUR_DOUBLE;
            $consomation_energie = clean_cdata($maison->CONSOMMATIONENERGETIQUE);
            $gaz_effet_serre = clean_cdata($maison->GAZEFFETDESERRE);

            $description_laterale_2 .= "<strong>Surfaces</strong>";
            $description_laterale_2 .= "<br>Surface : " . $superficie . " m<sup>2</sup>";
            $description_laterale_2 .= "<br>Surface loi Carrez : " . (isset($surface_carrez) ? $surface_carrez . " m<sup>2</sup>" : "NC");
            if (isset($surface_terrasse)) $description_laterale_2 .= "<br>Surface terrasse : " . $surface_terrasse . " m<sup>2</sup>";
            $description_laterale_2 .= "<br><br><strong>Extérieur</strong>";
            $description_laterale_2 .= "<br>Jardin : " . ($jardin !== null && $jardin != "" ? ($jardin ? 'Oui' : 'Non') : 'NC');
            $description_laterale_2 .= "<br>Année construction : " . ($annee_construction !== null && $annee_construction != "" ? $annee_construction : 'NC');
            $description_laterale_2 .= "<br>Neuf – Ancien : " . ($neuf_ancien !== null && $neuf_ancien != "" ? $neuf_ancien : 'NC');
            $description_laterale_2 .= "<br>Standing : " . ($standing !== null && $standing != "" ? $standing : 'NC');
            $description_laterale_2 .= "<br>État général : " . ($etat_general !== null && $etat_general != "" ? $etat_general : 'NC');
            $description_laterale_2 .= "<br>Vis-à-vis : " . ($vis_a_vis !== null && $vis_a_vis != "" ? ($vis_a_vis ? 'Oui' : 'Non') : 'NC');
            $description_laterale_2 .= "<br>État extérieur : " . ($etat_exterieur !== null && $etat_exterieur != "" ? $etat_exterieur : 'NC');
            $description_laterale_2 .= "<br>Fenêtres : " . ($fenetre !== null && $fenetre != "" ? $fenetre : 'NC');
            $description_laterale_2 .= "<br>Volets : " . ($volets !== null && $volets != "" ? $volets : 'NC');
            $description_laterale_2 .= "<br><br><strong>Intérieur</strong>";
            $description_laterale_2 .= "<br>Nombre pièces : " . (is_numeric($nb_piece) ? $nb_piece : 'NC');
            $description_laterale_2 .= "<br>Chambres : " . (is_numeric($chambres) ? $chambres : 'NC');
            $description_laterale_2 .= "<br>Salle(s) de bains : " . (is_numeric($salle_bains) ? $salle_bains : 'NC');
            $description_laterale_2 .= "<br>Salle(s) d'eau : " . (is_numeric($salle_eau) ? $salle_eau : 'NC');
            $description_laterale_2 .= "<br>WC : " . (is_numeric($wc) ? $wc : 'NC');
            $description_laterale_2 .= "<br>Cuisine : " . (is_numeric($cuisine) ? $cuisine : 'NC');
            $description_laterale_2 .= "<br>Séjour Double : " . (isset($sejour_double) ? ($sejour_double ? 'Oui' : 'Non') : 'NC');
            $description_laterale_2 .= "<br><br><strong>DPE</strong>";
            $description_laterale_2 .= "<br>Consommation énergie primaire : " . ($consomation_energie !== null && $consomation_energie != "" ? $consomation_energie : 'NC');
            $description_laterale_2 .= "<br>Gaz à effet de serre : " . ($gaz_effet_serre !== null && $gaz_effet_serre != "" ? $gaz_effet_serre : 'NC');

            $description_generale = clean_cdata($bien->COMMENTAIRES->FR, "<br><br>");
            if ($description_generale == '{}') {
                $description_generale = "";
            }

            $visite_virtuelle = clean_cdata($bien->INFO_GENERALES->VISITE_VIRTUELLE);
            $visite_virtuelle = filter_var($visite_virtuelle, FILTER_VALIDATE_URL) !== false ? $visite_virtuelle : null;

            $posts = get_posts([
                'post_type' => "bien",
                'numberposts' => 1,
                'meta_query' => [
                    [
                        'key' => "bien_aff_id",
                        'value' => $immofacile_aff_id,
                    ]
                ]
            ]);

            $post = count($posts) > 0 ? $posts[0] : null;
            if (isset($post)) $post_id = $post->ID;

            $post_id = wp_insert_post(array(
                'ID' => $post_id ?? 0,
                'post_title' => $titre,
                'post_type' => "bien",
                'post_status' => "publish"
            ));

            wp_set_object_terms($post_id, $cat_ville, "ville_cat");
            update_field("bien_prix", $prix, $post_id);
            update_field("bien_superficie", $superficie, $post_id);
            update_field("bien_description_generale", $description_generale, $post_id);
            update_field("bien_description_laterale_1", $description_laterale_1, $post_id);
            update_field("bien_description_laterale_2", $description_laterale_2, $post_id);
            update_field("bien_visite_virtuelle", $visite_virtuelle, $post_id);

            // On met à jour l'identifiant d'immofacile uniquement si le bien n'est pas déjà présent
            if (!isset($post) && (!isset($post_id) || $post_id == 0)) {
                update_field("bien_aff_id", $immofacile_aff_id, $post_id);
            }

            remove_photos($post_id);
            if (is_array($bien->IMAGES->IMG)) {
                $galerie_product = $bien->IMAGES->IMG;
            } elseif (is_string($bien->IMAGES->IMG)) {
                $galerie_product = [$bien->IMAGES->IMG];
            } else {
                $galerie_product = null;
            }
            if (isset($galerie_product)) {
                $image_product_ids = [];
                $upload_dir = wp_upload_dir();

                foreach ($galerie_product as $key => $value) {
                    try {
                        $ch = curl_init();
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                        curl_setopt($ch, CURLOPT_URL, $value);
                        $image_data = curl_exec($ch);
                        curl_close($ch);
                        if (!$image_data) continue;
                        $filename = basename(explode('?', $value)[0]);

                        // Check folder permission and define file location
                        if (wp_mkdir_p($upload_dir['path'])) {
                            $file = $upload_dir['path'] . '/' . $filename;
                        } else {
                            $file = $upload_dir['basedir'] . '/' . $filename;
                        }

                        // Create the image file on the server
                        file_put_contents($file, $image_data);
                        $filetype = wp_check_filetype($filename, null);

                        $attachment = array(
                            "post_mime_type" => $filetype["type"],
                            'guid' => $file,
                            "post_title" => sanitize_file_name($filename),
                            "post_content" => "",
                            "post_status" => "inherit"
                        );

                        $attach_id = wp_insert_attachment($attachment, $file, $post_id, false, false);

                        // Define attachment metadata
                        $attach_data = wp_generate_attachment_metadata($attach_id, $file);

                        // Assign metadata to attachment
                        wp_update_attachment_metadata($attach_id, $attach_data);

                        if ($key === 0) set_post_thumbnail($post_id, $attach_id);
                        $image_product_ids[] = $attach_id;
                    } catch (\Throwable $th) {
                        // Handle errors here
                    }
                }

                if (count($image_product_ids) > 0) {
                    update_field("bien_galerie", $image_product_ids, $post_id);
                }
            }
        } catch (\Throwable $th) {
            // Handle errors here
        }
    }

    $posts = get_posts([
        'post_type' => "bien",
        'numberposts' => -1,
        'meta_query' => [
            [
                'key' => "bien_aff_id",
                'compare' => 'NOT IN',
                'value' => $biens_existants,
            ]
        ]
    ]);

    foreach ($posts as $post) {
        remove_photos($post->ID);
        wp_delete_post($post->ID, true);
    }
}

// Permet de nettoyer la valeur
function clean_cdata($data, $replace = '') {
    if (is_object($data)) $data = json_encode($data);
    if (is_array($data)) $data = $data[0];
    return preg_replace('/[\r\n]+/', $replace, trim($data));
}

// Supprime les photos des médias
function remove_photos(int $post_id) {
    $photos = get_field("bien_galerie", $post_id);
    if (!isset($photos) || !$photos) return;
    foreach ($photos as $photo) {
        wp_delete_attachment($photo['ID'], true);
    }
}

				
			

Explications supplémentaires :

  • URL d’exportation XML : https://clients.immo-facile.com/office20/XXXXXXXXX/cache/export.xml, les XXXXXXXXX devront être remplacés par votre identifiant. Ce lien est fourni par Immofacile, il suffit de leur en faire la demande.
  • Spécificité du code : Ce code est spécifique aux maisons en vente. Il faudra l’adapter en fonction de vos besoins et se baser sur le fichier XML fourni pour ajuster la structure.
  • Champs ACF : Les champs ACF remplis dans le code correspondent à presque tous les champs présents dans les captures d’écran précédentes.

Deux autres fonctions créées :

  1. Fonction clean_cdata : Cette fonction permet de nettoyer les données brutes, en supprimant les caractères indésirables et en les remplaçant par des valeurs plus appropriées si nécessaire.
  2. Fonction remove_photos : Cette fonction supprime les photos associées à un bien dans la bibliothèque de médias WordPress, ce qui permet de gérer proprement les images des biens lorsque ceux-ci sont supprimés.

Vous avez des questions ou si vous souhaitez une assistance pour la mise en place ?

Implémentation sur le front-end du site

L’implémentation des biens Immofacile sur le front-end de votre site dépendra grandement du thème et des outils que vous utilisez. 

Si vous utilisez un thème acheté sur ThemeForest, l’implémentation peut être plus complexe…

Ces thèmes sont souvent très personnalisés et peuvent nécessiter des ajustements spécifiques pour intégrer des fonctionnalités dynamiques comme celles d’Immofacile.

Vous devrez probablement modifier les fichiers de thème directement et utiliser du code PHP pour afficher les données de vos biens.

Par contre si vous utilisez un constructeur de pages tel que Divi ou Elementor, l’implémentation sera beaucoup plus simple.

Ces builders permettent de créer des modules dynamiques qui peuvent afficher les biens en utilisant les champs ACF (Advanced Custom Fields) que nous avons configurés.

Elementor est un constructeur de pages très populaire pour WordPress, offrant une grande flexibilité et une interface intuitive. En tant qu’expert Elementor, je peux vous guider pour intégrer Immofacile de manière fluide et efficace, alors n’hésitez pas à me contacter.

Besoin d’un spécialiste pour l’intégration d’Immofacile d'AC3 ?

L’intégration d’Immofacile à votre site WordPress peut être un véritable défi, surtout si vous n’êtes pas familier avec le codage ou les aspects techniques de WordPress. C’est là que j’interviens. En tant qu’expert en création de site internet immobilier, je suis là pour vous aider à mettre en place Immofacile de manière fluide et efficace.

Avec mon expertise, je gère tous les aspects techniques de l’intégration, y compris la configuration des tâches CRON, la gestion des champs ACF et l’implémentation sur le front-end de votre site. Vous pouvez être sûr que l’intégration sera correcte et sans erreurs.

L’intégration d’Immofacile peut être longue et compliquée si vous devez tout apprendre par vous-même. Je peux réaliser cette tâche rapidement et efficacement, vous permettant de vous concentrer sur votre activité principale.

Je personnalise l’intégration selon vos besoins spécifiques et optimise les fonctionnalités pour maximiser les avantages d’Immofacile. Que ce soit pour créer des modèles personnalisés ou optimiser les performances de votre site, je m’assure que tout est parfaitement adapté à votre agence.

En faisant appel à moi, vous bénéficiez d’un support continu. En cas de problème ou de mise à jour nécessaire, je suis là pour vous aider à maintenir votre site en parfait état de fonctionnement.

Découvrir mon service de création de site internet immobilier