Avec CASAWP, les biens immobiliers peuvent être transférés au format XML depuis notre API CASAGATEWAY vers un site WordPress. L'importation crée un Custom Post Type (casawp_property
) et classe les biens dans des taxonomies dédiées. Ce type de publication personnalisé réserve le permalien /immobilien
, qui affiche l’archive des biens immobiliers.
https://github.com/casasoftch/casawp
Guide de mise en œuvre de CASAWP pour les tiers
Ce guide est destiné aux prestataires qui souhaitent intégrer CASAWP sur un site WordPress pour un client CASAONE existant ou futur. Une solide connaissance du développement PHP et WordPress est fortement recommandée pour utiliser correctement le plugin.
Installation
- Téléchargez la dernière version de CASAWP et installez-la sur WordPress.
-
Demandez une clé API à support@casasoft.ch
- Merci d'indiquer l’URL de la page d’accueil du site sur lequel le plugin sera déployé (ex.
https://domaine-client.tld
). - ⚠️ CASAWP étant un plugin open-source nécessitant des compétences en développement, nous ne proposons pas de support gratuit pour l’implémentation. Si vous souhaitez une assistance technique détaillée, veuillez fournir une adresse de facturation. Un appel avec un ingénieur CASASOFT peut être organisé (CHF 180.00/h dès la première minute).
- L'approbation du client est requise avant la délivrance des clés API.
- Merci d'indiquer l’URL de la page d’accueil du site sur lequel le plugin sera déployé (ex.
- Une fois la clé reçue, vous pourrez importer les biens immobiliers et gérer les demandes de formulaires.
FAQ
Pourquoi Google Maps ne fonctionne-t-il pas ?
➡️ Pour utiliser Google Maps, vous devez créer une clé API sur Google Cloud Platform et l'ajouter dans les paramètres WP de CASAWP → Détails → Maps JavaScript API.
Importer des biens immobiliers
Ajoutez la clé API fournie par CASASOFT dans l’onglet “Général” des paramètres CASAWP. Enregistrez les modifications avant d’effectuer le premier import.
Importation manuelle
Dans les paramètres CASAWP → onglet “Général”, cliquez sur “Obtenir les données de CASAGATEWAY” pour récupérer les annonces depuis la passerelle.
⚠️ Langues prises en charge
La langue du site doit correspondre à celle des annonces. Les formats suivants sont supportés :
-
de_DE
(allemand Allemagne) -
en_US
(anglais USA) -
fr_FR
(français France) -
it_IT
(italien Italie)
Les formats de_CH
(suisse) ou de_AT
(autrichien) ne sont pas pris en charge.
Importation automatique
CASAWP peut importer automatiquement les biens dès leur publication sur CASAGATEWAY. Pour activer cette fonction :
- Envoyez-nous l’URL principale du site.
- Nous générerons une poke URL, qui sera déclenchée dès qu’un bien est publié.
Filtrage de l’archive principale
L’archive principale (/immobilien
) affiche tous les biens disponibles ayant le statut “active” (casawp_availability
).
Vous pouvez affiner l'affichage avec des paramètres GET. Voici quelques exemples :
Afficher uniquement les références
/immobilien/?availabilities=reference
Afficher actifs, réservés & vendus
/immobilien/?availabilities[]=active&availabilities[]=taken&availabilities[]=reserved
Afficher uniquement les biens à vendre
/immobilien/?availabilities=active&salestypes=buy
Exclure les biens étrangers
/immobilien/?availabilities=active&locations_not=country_ch
⚠️ Utilisez la forme plurielle sans casawp_
.
Exemple : casawp_category=house
devient categories=house
.
Chaque taxonomie accepte un filtre positif et négatif (_not
).
Shortcodes pour afficher les annonces
[casawp_properties categories="apartment" order="ASC" posts_per_page="15"]
Affiche 15 appartements triés par ordre croissant.
Le fichier de vue correspondant shortcode-properties.phtml
est responsable de l'apparence.
Paramètres de requête acceptés :
'post-type'
'posts_per_page'
'order'
'ignore_sticky_posts'
'post__not_in'
'orderby'
'categories'
'locations'
'countries'
'salestypes'
'availabilities'
'categories_not'
'locations_not'
'countries_not'
'salestypes_not'
'availabilities_not'
'features'
'my_lng'
'my_lat'
'radius_km'
'projectunit_id'
Variables pass-through acceptées :
col_count
Afficher un formulaire
[casawp_contactform offer_id="12" id="my-custom-form"]
Créer des vues personnalisées
Copiez simplement les fichiers de vue correspondants depuis le plugin :
dans le répertoire de votre thème : /wp-content/themes/your-theme/casawp/chosen-viewtype/*.phtml
casawp-archive.php
et casawp-single.php
sont les fichiers principaux pour l'affichage des archives et des pages individuelles.
Ces fichiers peuvent être copiés dans le répertoire racine de votre thème.
Structure du fichier de vue
Créer des formulaires personnalisés
Enregistrez des formulaires supplémentaires dans votre thème en ajoutant le code suivant à votre functions.php.
<?php //create a new class that extends DefaultFormSettings to create a new form id. class MyCustomFormSetting extends \casawp\Form\DefaultFormSetting { public $id = 'my-custom-form'; function __construct(){ //name the view file you wish to use (defaults to contact-form) make sure you create the file in `wp-content/themes/your-theme/casawp/bootstrap3/{viewFileName}.phtml` $this->viewFile = 'custom-form-' . $this-id; } public function setAdditionalFields($form){ // set additional fields here $form-add(array( 'name' = 'customfield', 'type' = 'Text', 'options' = array( 'label' = __('Custom Field here', 'casawp'), ), )); //add validation filters here $form-setCustomFilters(array( array( 'name' = 'customfield', 'required' = true, 'validators' = array( array( 'name' = 'not_empty', ), array( 'name' = 'string_length', 'options' = array( 'min' = 2 ), ), ), ) )); return $form; } public function preCasaMailFilter($data, $postdata){ //manipulate the data before it is sent to casamail after the visitor posts the form and it's valid. $data['extra_data'] = array_merge($data['extra_data'], array('customfield' = $postdata['customfield'])); return $data; } } //make sure the plugin knows about it by informing the formSettingService from the plugin add_action( 'casawp_register_forms', 'casawp_register_forms_func', 10, 1 ); function casawp_register_forms_func( $formSettingService ) { $formSettingService-addFormSetting(new MyCustomFormSetting()); }
Réponse e-mail automatique personnalisée
Un exemple de la manière d’activer l’envoi d’un e-mail supplémentaire lorsqu’un client soumet une demande.
function casawp_after_inquirysend($payload) { //(array) $postdata //(object) $offer extract($payload); if ($offer-getFieldValue('seller_org_customerid') == "bento") { $subject = "Info-Meldung bezüglich einer Objekt-Anfrage von zueriimmo.ch: " . $offer-getTitle(); $message = 'Eine Anfrage wurde von zueriimmo.ch an die Bento AG gesendet.'; $message .= "\n"; $message .= "\n"; $message .= "Objekt:\n"; $message .= $offer-getTitle(). "\n"; $message .= 'ref: ' . $offer-getFieldValue('visualReferenceId') ? $offer-getFieldValue('visualReferenceId') : $offer-getFieldValue('referenceId') . "\n"; $message .= "\n"; $message .= "\n"; $message .= "Anfragender:\n"; foreach ($postdata as $key = $value) { $message .= $key . ": " . $value . "\n"; } wp_mail( 'jstalder@icloud.com, info@zueriimmo.ch', $subject, $message); } } add_action( 'casawp_after_inquirysend', 'casawp_after_inquirysend' );
Biens exclusifs accessibles via connexion
Le plugin utilise l’interface standard de WordPress pour l’inscription et l’authentification des utilisateurs qui ont accès à des biens immobiliers spéciaux non publiés.
Ces biens, où "availability = private", et le filtre correspondant "availability contains private", ne sont visibles que si l’utilisateur possède au minimum un niveau d’abonnement "subscription". Dans ce cas, il est automatiquement redirigé vers la page de connexion définie.
CASAWP génère automatiquement deux pages et les définit dans les paramètres :
- Page de connexion (Login)
- Page de déconnexion (Logout)
Formulaire de connexion personnalisé à n’importe quel emplacement
<?php if (isset($_GET['login']) && $_GET['login'] == 'failed') : ?>
<div class="alert alert-danger" role="alert">Login fehlgeschlagen.</div>
<?php endif; ?>
<div class="casawp-private-login-form">
<?php
$args = array(
'echo' => true,
'remember' => true,
'redirect' => 'http://where-should-i-go.com',
);
wp_login_form($args);
?>
</div>